freebsd.git
7 years agoAdd an NFSv4.1 mount option for "use one openowner".
rmacklem [Thu, 13 Apr 2017 21:54:19 +0000 (21:54 +0000)]
Add an NFSv4.1 mount option for "use one openowner".

Some NFSv4.1 servers such as AmazonEFS can only support a small fixed number
of open_owner4s. This patch adds a mount option called "oneopenown" that
can be used for NFSv4.1 mounts to make the client do all Opens with the
same open_owner4 string. This option can only be used with NFSv4.1 and
may not work correctly when Delegations are is use.

Reported by: cperciva
Tested by: cperciva
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D8988

7 years agoAdd call to svcpool_close() for the NFSv4 callback pool (svcpool_nfscbd).
rmacklem [Thu, 13 Apr 2017 20:16:29 +0000 (20:16 +0000)]
Add call to svcpool_close() for the NFSv4 callback pool (svcpool_nfscbd).

A function called svcpool_close() was added to the server side krpc by
r313735, so that a pool could be closed without destroying the data structures.
This little patch adds a call to it for the callback pool (svcpool_nfscbd),
so that the nfscbd daemon can be killed/restarted and continue to work
correctly.

MFC after: 2 weeks

7 years agoPass COMPILER_FEATURES down to submakes for installworld.
bdrewery [Thu, 13 Apr 2017 19:27:46 +0000 (19:27 +0000)]
Pass COMPILER_FEATURES down to submakes for installworld.

This is for WITH_SYSTEM_COMPILER, WITHOUT_CROSS_COMPILER, external
compiler, etc.

MFC after: 2 weeks
Sponsored by: Dell EMC Isilon

7 years agoo Redundant assignments removed.
maxim [Thu, 13 Apr 2017 18:13:10 +0000 (18:13 +0000)]
o Redundant assignments removed.

Found by: PVS-Stdio, V519
Reviewed by: ae

7 years agodummynet: Use strlcpy to appease static checkers
cem [Thu, 13 Apr 2017 17:47:44 +0000 (17:47 +0000)]
dummynet: Use strlcpy to appease static checkers

Some dummynet modules used strcpy() to copy from a larger buffer
(dn_aqm->name) to a smaller buffer (dn_extra_parms->name).  It happens that
the lengths of the strings in the dn_aqm buffers were always hardcoded to be
smaller than the dn_extra_parms buffer ("CODEL", "PIE").

Use strlcpy() instead, to appease static checkers.  No functional change.

Reported by: Coverity
CIDs: 1356163, 1356165
Sponsored by: Dell EMC Isilon

7 years agolinux_ioctl: Refactor some v4l2 struct converters
cem [Thu, 13 Apr 2017 17:34:51 +0000 (17:34 +0000)]
linux_ioctl: Refactor some v4l2 struct converters

According to the C standard, it is invalid to copy beyond the end of an
object, even if that object is obviously a member of a larger object (a
struct, in this case).

Appease the standard and Coverity by refactoring the copy in a
straightforward way.  No functional change.

Reported by: Coverity (CWE-120)
CIDs: 1007819, 1007820, 1007821, 1007822, 1009668, 1009669
Security: no (false positive detection)
Sponsored by: Dell EMC Isilon

7 years agocxgbe: Query some more RDMA related parameters from the firmware.
np [Thu, 13 Apr 2017 17:16:36 +0000 (17:16 +0000)]
cxgbe: Query some more RDMA related parameters from the firmware.

MFC after: 3 days
Sponsored by: Chelsio Communications

7 years agoloader: Avoid possible overflow via environment variable
cem [Thu, 13 Apr 2017 17:11:49 +0000 (17:11 +0000)]
loader: Avoid possible overflow via environment variable

Reported by: Coverity (CWE-120)
CID: 1006704
Sponsored by: Dell EMC Isilon

7 years agoClear h/w csum flags on mbuf handled by UDP.
ae [Thu, 13 Apr 2017 17:03:57 +0000 (17:03 +0000)]
Clear h/w csum flags on mbuf handled by UDP.

When checksums of received IP and UDP header already checked, UDP uses
sbappendaddr_locked() to pass received data to the socket.
sbappendaddr_locked() uses given mbuf as is, and if NIC supports checksum
offloading, mbuf contains csum_data and csum_flags that were calculated
for already stripped headers. Some NICs support only limited checksums
offloading and do not use CSUM_PSEUDO_HDR flag, and csum_data contains
some value that UDP/TCP should use for pseudo header checksum calculation.

When L2TP is used for tunneling with mpd5, ng_ksocket receives mbuf with
filled csum_flags and csum_data, that were calculated for outer headers.
When L2TP header is stripped, a packet that was tunneled goes to the IP
layer and due to presence of csum_flags (without CSUM_PSEUDO_HDR) and
csum_data, the UDP/TCP checksum check fails for this packet.

Reported by: Irina Liakh <spell at itl ua>
Tested by: Irina Liakh <spell at itl ua>
MFC after: 1 week

7 years agoRather than checking if the top bit in a virtual address is a 0 or 1
andrew [Thu, 13 Apr 2017 16:57:02 +0000 (16:57 +0000)]
Rather than checking if the top bit in a virtual address is a 0 or 1
compare against VM_MAXUSER_ADDRESS as we should have been doing.

Sponsored by: DARPA, AFRL

7 years agoFix an out-of-bounds write when a zero-length buffer is passed.
brooks [Thu, 13 Apr 2017 15:52:45 +0000 (15:52 +0000)]
Fix an out-of-bounds write when a zero-length buffer is passed.

Found with ttyname_test and CHERI bounds checking.

Reviewed by: emaste
Obtained from: CheriBSD
MFC after: 1 week
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D10377

7 years agoMap DMAP as nx.
kib [Thu, 13 Apr 2017 15:49:55 +0000 (15:49 +0000)]
Map DMAP as nx.

Demotions preserve PG_NX, so it is enough to set nx bit for initial
lowest-level paging entries.

Suggested and reviewed by: alc
Sponsored by: The FreeBSD Foundation
MFC after: 1 week

7 years agoCorrect an out of bounds read with HN_AUTOSCALE and very large numbers.
brooks [Thu, 13 Apr 2017 15:49:32 +0000 (15:49 +0000)]
Correct an out of bounds read with HN_AUTOSCALE and very large numbers.

The maximum scale is 6 (K, M, G, T, P, E) (B is 0).

Overly large explict scales were checked correctly, but for sufficently
large numbers HN_AUTOSCALE would get to 7 resulting in an out of bounds
read.

Found with humanize_number_test and CHERI bounds checking.

Reviewed by: emaste
Obtained from: CheriBSD
MFC after: 1 week
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D10376

7 years agoDon't prefix zero with 0x in assym.s.
andrew [Thu, 13 Apr 2017 15:43:44 +0000 (15:43 +0000)]
Don't prefix zero with 0x in assym.s.

The arm64 binutils only accepts 0 as an offset to the Load-Acquire Register
instructions where llvm will acceps both 0 and 0x0. The thread switching
code uses these with SCHED_ULE to block waiting for a lock to be released.
As the offset of the data to be loaded is zero this is safe, however it is
useful to keep the offset in the instruction to document what is being
loaded.

To work around this issue in binutils only generate the 0x prefix for
non-zero values.

Reported by: kan
Sponsored by: DARPA, AFRL

7 years agoSet the arm64 Execute-never bits in more places.
andrew [Thu, 13 Apr 2017 15:03:03 +0000 (15:03 +0000)]
Set the arm64 Execute-never bits in more places.

We need to set the Execute-never bits when mapping device memory as the
hardware may perform speculative instruction fetches.

Set the Privileged Execute-ever bit on userspace memory to stop the kernel
if it is tricked into executing it.

Reviewed by: kib
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D10382

7 years agoFix vdev_geom_attach_by_guids for partitioned disks
asomers [Thu, 13 Apr 2017 14:51:34 +0000 (14:51 +0000)]
Fix vdev_geom_attach_by_guids for partitioned disks

When opening a vdev whose path is unknown, vdev_geom must find a geom
provider with a label whose guids match the desired vdev. However, due to
partitioning, it is possible that two non-synonomous providers will share
some labels. For example, if the first partition starts at the beginning of
the drive, then ada0 and ada0p1 will share the first label. More troubling,
if the last partition runs to the end of the drive, then ada0p3 and ada0
will share the last label. If vdev_geom opens ada0 when it should've opened
ada0p3, then the pool won't be readable. If it opens ada0 when it should've
opened ada0p1, then it will corrupt some other partition when it writes the
3rd and 4th labels.

The easiest way to reproduce this problem is to install a mirrored root pool
with the default partition layout, then swap the positions of the two boot
drives and reboot.  Whether the bug manifests depends on the order in which
geom lists its providers, which is arbitrary.

Fix this situation by modifying the search algorithm to prefer geom
providers that have all four labels intact. If no such provider exists, then
open whichever provider has the most.

Reviewed by: mav
MFC after: 3 weeks
Sponsored by: Spectra Logic Corp
Differential Revision: https://reviews.freebsd.org/D10365

7 years agoAdd large replay widow support to setkey(8) and libipsec.
ae [Thu, 13 Apr 2017 14:44:17 +0000 (14:44 +0000)]
Add large replay widow support to setkey(8) and libipsec.

When the replay window size is large than UINT8_MAX, add to the request
the SADB_X_EXT_SA_REPLAY extension header that was added in r309144.

Also add support of SADB_X_EXT_NAT_T_TYPE, SADB_X_EXT_NAT_T_SPORT,
SADB_X_EXT_NAT_T_DPORT, SADB_X_EXT_NAT_T_OAI, SADB_X_EXT_NAT_T_OAR,
SADB_X_EXT_SA_REPLAY, SADB_X_EXT_NEW_ADDRESS_SRC, SADB_X_EXT_NEW_ADDRESS_DST
extension headers to the key_debug that is used by `setkey -x`.

Modify kdebug_sockaddr() to use inet_ntop() for IP addresses formatting.
And modify kdebug_sadb_x_policy() to show policy scope and priority.

Reviewed by: gnn, Emeric Poupon
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D10375

7 years agoUpdate list of Conexant and Realtek codecs.
mav [Thu, 13 Apr 2017 14:40:48 +0000 (14:40 +0000)]
Update list of Conexant and Realtek codecs.

MFC after: 2 weeks

7 years agoUse proper fields to check for interrupt trigger mode.
kan [Thu, 13 Apr 2017 14:23:27 +0000 (14:23 +0000)]
Use proper fields to check for interrupt trigger mode.

7 years agoIn ARMv8.1 ARM has added a process state bit to disable access to userspace
andrew [Thu, 13 Apr 2017 13:46:01 +0000 (13:46 +0000)]
In ARMv8.1 ARM has added a process state bit to disable access to userspace
from the kernel. Make use of this to restrict accessing userspace to just
the functions that explicitly handle crossing the user kernel boundary.

Reported by: kib
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D10371

7 years agoAdd SCTLR bits added in ARMv8.1 and ARMv8.2 and start to use them in the
andrew [Thu, 13 Apr 2017 11:56:27 +0000 (11:56 +0000)]
Add SCTLR bits added in ARMv8.1 and ARMv8.2 and start to use them in the
early boot code.

Sponsored by: DARPA, AFRL

7 years agoloader/multiboot: fix multiboot loading
royger [Thu, 13 Apr 2017 09:59:12 +0000 (09:59 +0000)]
loader/multiboot: fix multiboot loading

The current multiboot loader code doesn't clean the metadata added to the
kernel after the bi_load64 dry run, which breaks accounting of the required
memory for the metadata.

This issue didn't show itself before because all the metadata items where small
(8bytes), but after r316343 there's a big blob in the metadata, which triggers
this. Fix it by cleaning the metadata added to the kernel after the bi_load64
dry run. Also add a comment describing the memory layout when booting using
multiboot (Xen Dom0).

This unbreaks booting a FreeBSD/Xen Dom0 after r316343.

MFC after: 3 weeks
Sponsored by: Citrix Systems R&D

7 years agoFix expectations for testcases per bsdgrep vs gnu grep from base/ports
ngie [Thu, 13 Apr 2017 04:10:27 +0000 (04:10 +0000)]
Fix expectations for testcases per bsdgrep vs gnu grep from base/ports

The following failures occur with various versions of grep:

BSD grep:
- :context
- :context2

GNU grep (base):
- :color
- :oflag_zerolen

GNU grep (ports):
- :recurse_symlink

Tested with: bsdgrep (^/head@r316542), gnu grep (base/2.5.1), gnu grep (ports/2.27)
Reported by: Jenkins (bsdgrep failures)
Sponsored by: Dell EMC Isilon

7 years agodrm2: Add some missing PCIIDs for some Haswell systems
cem [Thu, 13 Apr 2017 01:56:15 +0000 (01:56 +0000)]
drm2: Add some missing PCIIDs for some Haswell systems

Submitted by: Jia-Shiun Li <jiashiun at gmail.com>

7 years agoFix rss_ind_table entry for num_funcs > 1
davidcs [Thu, 13 Apr 2017 01:17:49 +0000 (01:17 +0000)]
Fix rss_ind_table entry for num_funcs > 1

MFC after:3 days

7 years agoAdd UEFI support to vmrun.sh
allanjude [Thu, 13 Apr 2017 00:07:39 +0000 (00:07 +0000)]
Add UEFI support to vmrun.sh

Adds:
 -E: Use UEFI mode
 -f: path to UEFI firmware image (default: path to uefi-edk2-bhyve package)
 -F: UEFI framebuffer size (default: w=1024,h=768)
 -L: IP to listen for VNC connections on (default: 127.0.0.1)
 -P: Port to listen for VNC connections on (default: 5900)
 -T: Enable tablnet device (for VNC)
 -v: Wait for VNC client before booting VM

Submitted by: Shawn Webb <shawn.webb@hardenedbsd.org>
MFC after: 2 weeks
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D10378

7 years agoFix the NFS client for "text file modified, process killed" mmap'd case.
rmacklem [Wed, 12 Apr 2017 21:37:12 +0000 (21:37 +0000)]
Fix the NFS client for "text file modified, process killed" mmap'd case.

When an mmap'd text file is written and then executed immediately
afterwards, it was possible that the modify time would change after the
text file was executing, resulting in the process executing the file
being killed. This was usually only observed when the file system's
times were set to higher resolution, but could have occurred for any
time resolution.
This was reported on a recent email list discussion.
This patch adds a VOP_SET_TEXT() to the NFS client which flushed all
dirty pages to the NFS server and then makes sure that n_mtime is up
to date to avoid this from occurring.
Thanks go to kib@ and pho@ for their help with developing this patch.

Tested by: pho
Reviewed by: kib
MFC after: 2 weeks

7 years agosh: Reduce size of limits table.
jilles [Wed, 12 Apr 2017 21:15:55 +0000 (21:15 +0000)]
sh: Reduce size of limits table.

7 years agoThe sysctl variable net.inet.tcp.drop_synfin is not honored in all states,
tuexen [Wed, 12 Apr 2017 20:27:15 +0000 (20:27 +0000)]
The sysctl variable net.inet.tcp.drop_synfin is not honored in all states,
for example not in SYN-SENT.
This patch adds code to check the sysctl variable in other states than
LISTEN.
Thanks to ae and gnn for providing comments.
Reviewed by: gnn
MFC after: 1 week
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D9894

7 years agoClarify units for mediasize and sectorsize in DoFile(..)
ngie [Wed, 12 Apr 2017 20:20:04 +0000 (20:20 +0000)]
Clarify units for mediasize and sectorsize in DoFile(..)

They're byte quantities.

MFC after: 7 weeks
Sponsored by: Dell EMC Isilon

7 years agoImprove drawing of the vga planar mode mouse image a little. Unobfuscate
bde [Wed, 12 Apr 2017 20:18:38 +0000 (20:18 +0000)]
Improve drawing of the vga planar mode mouse image a little.  Unobfuscate
the method a lot.

Reduce the AND mask to the complement of the cursor's frame, so that area
inside the frame is not drawn first in black and then in lightwhite.  The
AND-OR method is only directly suitable for the text mouse image, since
it doesn't go to the hardware there.  Planar mode Mouse cursor drawing
takes 10-20 usec on my Haswell system (approx. 100 graphics accesses
at 130 nsec each), so the transient was not visible.

The method used the fancy read mode 1 and its color compare and color
don't care registers with value 0 in them so that all colors matched.
All that this did was make byte reads of frame buffer memory return 0xff,
so that the x86 case could obfuscate read+write as "and".  The read must
be done for its side effect on the graphics controller but is not used,
except it must return 0xff to avoid affecting the write when the write
is obfuscated as a read-modify-write "and".  Perhaps that was a good
optimization for 8088 CPUs where each extra instruction byte took as
long as a byte memory access.

Just use read+write after removing the fancy read mode.  Remove x86
ifdefs that did the "and".  After removing the "and" in the non-x86
part of the ifdefs, fix 4 of 6 cases where the shift was wrong.

7 years agoClarify `minfree` warning message in check_space(..)
ngie [Wed, 12 Apr 2017 20:08:39 +0000 (20:08 +0000)]
Clarify `minfree` warning message in check_space(..)

- State that the units are kB.
- Be more complete/concise in terms of what is required (in this case
  `minfree` must be at least `X`kB)

MFC after: 7 weeks
Sponsored by: Dell EMC Isilon

7 years agoReport _SC_SEM_NSEMS_MAX and _SC_SEM_VALUE_MAX which show parameters
kib [Wed, 12 Apr 2017 19:27:14 +0000 (19:27 +0000)]
Report _SC_SEM_NSEMS_MAX and _SC_SEM_VALUE_MAX which show parameters
of the current usermode implementation of the POSIX semaphores.

For NSEMS_MAX, return -1 without changing errno, which indicates that
the variable has no limit.  Before, sysconf(3) returned parameters
queried from the ksem(9) legacy implementation, which apparently has
low defaults for NSEMS_MAX.

Reported and tested by: jbeich
Sponsored by: The FreeBSD Foundation
MFC after: 1 week

7 years agoFix an issue in the rev.316718 causing variable to be unsed uninitialized.
sobomax [Wed, 12 Apr 2017 19:23:41 +0000 (19:23 +0000)]
Fix an issue in the rev.316718 causing variable to be unsed uninitialized.

Reported by:    Coverity
Nudged by:      cem
MFC after: 2 weeks

7 years agoFix removal of mouse image by the vga planar renderer in the right border
bde [Wed, 12 Apr 2017 18:52:06 +0000 (18:52 +0000)]
Fix removal of mouse image by the vga planar renderer in the right border
in unusual cases.  Optimize and significantly clean up removal in this
renderer.  Optimize removal in the vga direct renderer.

Removal only needs to be done in the border (the part with pixels) in
both cases.  The planar renderer used the condition scp->xoff > 0 to
test whether a right border exists.  This actually tests for a left
border, and when the total horizontal border is 8 pixels, rounding gives
only a right border.  This was the unusual broken case.  An example
is easy to configure using something like "vidcontrol -f 8x16 iso-8x16
-g 79x25 MODE_27".

Optimize the planar case a little by only removing 9x13 active pixels
out of 16x16.  Optimize it a lot by not doing anything if there is no
overlap with the border.  Don't unroll the main loop or hard-code so
many assumptions about font sizes in it.  On my Haswell system, graphics
memory and i/o accesses takes about 520 cycles each so optimizations from
unrolling are in the noise.

Optimize the direct case to not do anything if there is no overlap with
the border.  Do a sanity check on the saveunder's coordinates.  This
requires a previous change to pass non-rounded coordinates.

7 years agoTrival style fix to previous commit to add this detail.
bde [Wed, 12 Apr 2017 17:38:00 +0000 (17:38 +0000)]
Trival style fix to previous commit to add this detail.

The previous commit also fixed the coordinates passed to the mouse
removal renderer.  The coordinates were rounded down to a character
boundary, and thus essentially unusable.  The renderer had to keep
track of the previous position, or clear a larger area.  The latter
is only safe in the border, which is all that needs special handling
anyway.

I think no renderer depends on the bug.  They have the following
handling:
- gfb sparc64: this seems to assume non-rounded coordinates
- gfb other: does nothing (seems to be missing border handling)
- vga text: does nothing (doesn't need border handling)
- vga planar: clears extras in the border, with some bugs.  The fixes
  will use the precise coordinates to optimize.
- vga direct: clears at the previous position with no check that it
  is active, and clears everything.  Checking finds this bug.
- others: are there any?

7 years agoFix removing of the mouse image in vga planar mode with 8x8 fonts, and
bde [Wed, 12 Apr 2017 17:06:24 +0000 (17:06 +0000)]
Fix removing of the mouse image in vga planar mode with 8x8 fonts, and
reduce hard-coded assumptions on font sizes so that the cursor size
can be more independent of the font size.  Moving the mouse in the
buggy mode left trails of garbage.

The mouse cursor currently has size 9x13 in all modes.  This can occupy
2x3 character cells with 8x8 fonts, but the algorithm was hard-coded
for only 2x2 character cells.  Rearrange to hard-code only a maximum
cursor size (now 10x16) and to not hard-code in the logic.  The number
of cells needed is now over-estimated in some cases.

2x3 character cells should also be used in text mode with 8x8 fonts
(except with large pixels, the cursor size should be reduced), but
hard-coding for 2x2 in the implementation makes it not very easy to
expand, and it practice it shifts out bits to reduce to 2x2.

In graphics modes, expansion is easier and there is no shifting out
for 9x13 cursors (but 9 is a limit for hard-coding for 2 8-bit VGA
cells wide).  A previous commit removed the same buggy hard-coding for
removal at a lower level in planar mode.  Another previous commit fixed
the much larger code for lower-level removal in direct mode; this is
independent of the font size so worked for 8x8 fonts.  Text mode always
depended on the higher-level removal here, and always worked since
everything was hard-coded consistently for 2x2 character cells.

7 years agoStart to use the User and Privileged execute-never bits in the arm64
andrew [Wed, 12 Apr 2017 16:28:40 +0000 (16:28 +0000)]
Start to use the User and Privileged execute-never bits in the arm64
pagetables. This sets both bits when entering an address we know shouldn't
be executed.

I expect we could mark all userspace pages as Privileged execute-never to
ensure the kernel doesn't branch to one of these addresses.

While here add the ARMv8.1 upper attributes.

Reviewed by: alc, kib (previous version)
MFC after: 1 week
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D10360

7 years agoFix clobbering of the default attribute and the screen position in
bde [Wed, 12 Apr 2017 16:21:55 +0000 (16:21 +0000)]
Fix clobbering of the default attribute and the screen position in
scteken_init().  Move the internals of scteken_sync() into a local
function to help do this.

scteken_init() reset or adjusted the default attribute and screen
position at least 3 and 5 times, respectively.  Warm init shouldn't
do any more than reset the "input" state.
  (scterm-sc.c (which still works after minor editing), only resets
  the escape state and the saved cursor position, and then does a
  nearly-null sync of the current color.)

This mainly broke mode changes, and was most noticeable when the
background color is not teken's default (usually black).  Then the
screen gets cleared in the wrong color.  vidcontrol restores the
default normal attribute and tries to restore the default reverse
attribute.  vidcontrol doesn't clear the screen again after restoring
the attribute(s), and it is too late to do it there without flicker.
Now the default normal attribute is restored before the change affects
the rendering.

When the foreground color is not teken's default, clearing with the
wrong attributes gave strange cursor colors for some cursor types.

The default reverse attribute is not restored since it is unsupported.

2/3 of the clobbering was from 2 resetting window resizing calls.  The
second one is needed to restore the size, but must not reset.  Window
resizing also sanitizes the cursor position, and after the main reset
resets the window size, the cursor row would often be adjusted from
24 to 23 if it were not already reset to 0.  scteken_sync() is good
for restoring the window size and the cursor position in the correct
order, but was unusable at init time since scp->ts is not always
initialized then.  Adjust to use its internals.

I didn't notice any problems from the cursor reset.  The cursor should
be reset, and a previous fix was to reset it consistently a little
later.

Doing nothing for warm init works almost as well, if not better.  It
is not very useful to reset the escape state for mode changes, since
the reset is especially likely to be null then.  The escape state is
most likely to be non-initial and corrupted by its most normal uses
-- sloppy non-atomic output where a context switch or just mixing
stdout with stderr splits up escape sequences.

7 years agoUse the unprivileged variant of the load and store instructions most
andrew [Wed, 12 Apr 2017 12:34:27 +0000 (12:34 +0000)]
Use the unprivileged variant of the load and store instructions most
places possible in the kernel. This forces these functions to fail if
userspace is unable to access a given memory location, even if it is in
the user memory range.

This will simplify adding Privileged Access Never support later.

MFC after: 1 week
Sponsored by: DARPA, AFRL

7 years agoOpenBSD 6.1 release added.
maxim [Wed, 12 Apr 2017 11:41:35 +0000 (11:41 +0000)]
OpenBSD 6.1 release added.

7 years agoInclude RISC-V target to universe build.
br [Wed, 12 Apr 2017 10:45:19 +0000 (10:45 +0000)]
Include RISC-V target to universe build.

Check if RISC-V external toolchain package is installed,
otherwise skip build.

Reviewed by: emaste
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D10344

7 years agoDisable fformat-extensions for RISC-V target as GCC 6.1 external compiler
br [Wed, 12 Apr 2017 10:40:30 +0000 (10:40 +0000)]
Disable fformat-extensions for RISC-V target as GCC 6.1 external compiler
has no support for that.

Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D10348

7 years agoProvide a NULL pointer to device tree blob so GENERIC kernel
br [Wed, 12 Apr 2017 10:34:50 +0000 (10:34 +0000)]
Provide a NULL pointer to device tree blob so GENERIC kernel
can be compiled.
We will need to get pointer to DTB from hardware, so mark as TODO.

Sponsored by: DARPA, AFRL

7 years agortwn: remove out-of-bounds access + fix debug output.
avos [Wed, 12 Apr 2017 07:21:54 +0000 (07:21 +0000)]
rtwn: remove out-of-bounds access + fix debug output.

Omit unused rates while initializing / dumping Tx power values.

They were not accessed anywhere (except for debugging), so this is
(mostly) no-op.

Tested with
 * RTL8188EU, STA mode.
 * RTL8812AU, STA mode.

Found by: PVS-Studio

7 years agoMost wireless drivers don't support altq(4).
kevlo [Wed, 12 Apr 2017 01:15:33 +0000 (01:15 +0000)]
Most wireless drivers don't support altq(4).

7 years agoFix defects reported by Coverity
davidcs [Wed, 12 Apr 2017 00:52:09 +0000 (00:52 +0000)]
Fix defects reported by Coverity
1. Deadcode in ecore_init_cache_line_size(), qlnx_ioctl() and
qlnx_clean_filters()
2. ARRAY_VS_SINGLETON issue in qlnx_remove_all_mcast_mac() and
qlnx_update_rx_prod()

MFC after:5 days

7 years agoDon't throw away Open state when a NFSv4.1 client recovery fails.
rmacklem [Tue, 11 Apr 2017 22:47:02 +0000 (22:47 +0000)]
Don't throw away Open state when a NFSv4.1 client recovery fails.

If the ExchangeID/CreateSession operations done by an NFSv4.1 client
after the server crashes/reboots fails, it is possible that some process/thread
is waiting for an open_owner lock. If the client state is free'd, this
can cause a crash.
This would not normally happen, but has been observed on a mount of the
AmazonEFS service.

Reported by: cperciva
Tested by: cperciva
PR: 216086
MFC after: 2 weeks

7 years agoWork around an issue with mksnap_ffs not working in chroot'ed environment.
sobomax [Tue, 11 Apr 2017 21:55:39 +0000 (21:55 +0000)]
Work around an issue with mksnap_ffs not working in chroot'ed environment.
The problem is that the statfs(2) system call used to determine the relevant
mount point returns path within real root in the f_mntonname, causing
nmount(2) system call to fail with ENOENT.

Use a bit of heuristics to skip over few starting path elements when it
happens until we hit an actual mount point.

For this to work properly the whole mount should be accessible within the
chroot, it's going to still fail if chroot only has access to a part of the
mounted fs.

Reviewed by: mckusick
Approved by: mckusick
MFC after: 2 weeks

7 years agoDuring a server crash recovery, fix the NFSv4.1 client for a NFSERR_BADSESSION
rmacklem [Tue, 11 Apr 2017 20:28:15 +0000 (20:28 +0000)]
During a server crash recovery, fix the NFSv4.1 client for a NFSERR_BADSESSION
during recovery.

If the NFSv4.1 client gets a NFSv4.1 NFSERR_BADSESSION reply to an Open/Lock
operation while recovering from the server crash/reboot, allow the opens
to be retained for a subsequent recovery attempt. Since NFSv4.1 servers
should only reply NFSERR_BADSESSION after a crash/reboot that has lost
state, this case should almost never happen.
However, for the AmazonEFS file service, this has been observed when
the client does a fresh TCP connection for RPCs.

Reported by: cperciva
Tested by: cperciva
PR: 216088
MFC after: 2 weeks

7 years agoInherit IPv6 checksum offloading flags to vlan interfaces.
ae [Tue, 11 Apr 2017 19:23:25 +0000 (19:23 +0000)]
Inherit IPv6 checksum offloading flags to vlan interfaces.

if_vlan(4) interfaces inherit IPv4 checksum offloading flags from the
parent when VLAN_HWCSUM and VLAN_HWTAGGING flags are present on the
parent interface. Do the same for IPv6 checksum offloading flags.

Reported by: Harry Schmalzbauer
Reviewed by: np, gnn
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D10356

7 years agoMake sysctl identifiers for direct netisr queue unique.
ae [Tue, 11 Apr 2017 19:20:20 +0000 (19:20 +0000)]
Make sysctl identifiers for direct netisr queue unique.
Introduce IPCTL_INTRDQMAXLEN and IPCTL_INTRDQDROPS macros for this purpose.

Reviewed by: gnn
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D10358

7 years agoRegenerate src.conf.5 after r316706
emaste [Tue, 11 Apr 2017 17:06:52 +0000 (17:06 +0000)]
Regenerate src.conf.5 after r316706

7 years agomakeman: don't copy $FreeBSD$ tags from source files into output
emaste [Tue, 11 Apr 2017 17:01:20 +0000 (17:01 +0000)]
makeman: don't copy $FreeBSD$ tags from source files into output

Copying the source VCS ID from WITH_/WITHOUT_* into the generated
src.conf.5 is not necessary, as it is generally possible to determine
the same information using the VCS to examine commit metadata. The
individual source files also match the name of the option recorded in
the generated file, so it is clear from where the content originated.

The copied IDs generate extraneous, non-content noise in the generated
src.conf.5 in some cases, including the first time the file is generated
on a stable branch. In addition, the source file $FreeBSD$ tags are not
expanded by git or other non-Subversion VCSs, which means that makeman
previously could not be used in a non-Subversion working tree.

I accept that there's some desire to keep these, but on balance believe
there is more benefit in removing them.

Reviewed by: imp, ngie
MFC after: 1 month
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D7997

7 years agoloader.efi: only fetch zfs pool guid for the actual boot device
tsoome [Tue, 11 Apr 2017 15:20:32 +0000 (15:20 +0000)]
loader.efi: only fetch zfs pool guid for the actual boot device

With the zfs probe cleanup, the mistake did slip in the probe code;
instead of reading the pool GUID for the actual boot device (partition),
we read GUID for first found pool from the boot disk.

This will break the case when there are both zfs pool and ufs on the boot
disk, and the ufs is used for boot, not zfs.

Reviewed by: smh
Differential Revision: https://reviews.freebsd.org/D10359

7 years agoThis file is also used in libcompiler_rt, so bring in stdbool.h if we're not
cognet [Tue, 11 Apr 2017 13:31:27 +0000 (13:31 +0000)]
This file is also used in libcompiler_rt, so bring in stdbool.h if we're not
in the kernel.

7 years agoDo not adjust interface MTU automatically. Leave this task to the system
ae [Tue, 11 Apr 2017 08:56:18 +0000 (08:56 +0000)]
Do not adjust interface MTU automatically. Leave this task to the system
administrator.

This restores the behavior that was prior to r274246.

No objection from: #network
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D10215

7 years agoRemove debugging printf.
kib [Tue, 11 Apr 2017 08:29:12 +0000 (08:29 +0000)]
Remove debugging printf.

Instead, issue a diagnostic and return appropriate error if
ncl_flush() was unable to clean buffer queue after the specified
number or retries.

Reviewed by: rmacklem
Sponsored by: The FreeBSD Foundation
MFC after: 2 weeks

7 years ago[net80211] refactor out "add slot" and "purge slot" for A-MPDU.
adrian [Tue, 11 Apr 2017 07:05:55 +0000 (07:05 +0000)]
[net80211] refactor out "add slot" and "purge slot" for A-MPDU.

This is in preparation for A-MSDU decap in A-MPDU support.

* refactor out the code to purge a single reorder slot into ampdu_rx_purge_slot().
* refactor out the code to add a frame to the given reorder slot
  to ampdu_rx_add_slot().

This should be a big no-op as far as current code is concerned.

Tested:

* QCA9880v2, STA mode (11ac)
* iwn(4), STA mode (11n)

Reviewed by: avos
Differential Revision: https://reviews.freebsd.org/D10328

7 years agoMFV r316693:
pfg [Mon, 10 Apr 2017 22:56:38 +0000 (22:56 +0000)]
MFV r316693:
8046 Let calloc() do the multiplication in libzfs_fru_refresh

https://github.com/illumos/illumos-gate/commit/5697e03e6e3e2697f56ae341c7c8ce79680d6a2e

https://www.illumos.org/issues/8046

Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Paul Dagnelie <pcd@delphix.com>
Approved by: Robert Mustacchi <rm@joyent.com>
Author: Pedro Giffuni <pfg@freebsd.org>

MFC after: 3 days

7 years agoFix a crash during unmount of an NFSv4.1 mount.
rmacklem [Mon, 10 Apr 2017 22:47:18 +0000 (22:47 +0000)]
Fix a crash during unmount of an NFSv4.1 mount.

Larry Rosenman reported a crash on freebsd-current@ which was caused by
a premature release of the krpc backchannel socket structure.
I believe this was caused by a race between the SVC_RELEASE() in clnt_vc.c
and the xprt_unregister() in the higher layer (clnt_rc.c), which tried
to lock the mutex in the xprt structure and crashed.
This patch fixes this by removing the xprt_unregister() in the clnt_vc
layer and allowing this to always be done by the clnt_rc (higher reconnect
layer).

Reported by: ler@lerctr.org
Tested by: ler@letctr.org
MFC after: 2 weeks

7 years agoSet initial values for nfsstatfs in the NFSv4 client.
rmacklem [Mon, 10 Apr 2017 21:49:35 +0000 (21:49 +0000)]
Set initial values for nfsstatfs in the NFSv4 client.

The AmazonEFS NFSv4.1 server does not support the FILES_FREE and FILES_TOTAL
attributes. As such, an NFSv4.1 mount to the server would return garbage
for these values. This patch initializes the fields of the nfsstatfs structure,
so that "df" and friends will at least return consistent bogus values.
This patch should have effect when mounting other NFSv4.1 servers.

Reported by: cperciva
MFC after: 2 weeks

7 years agoProvide some kind of __sync_bool_compare_and_swap_4(), as it is used by CK,
cognet [Mon, 10 Apr 2017 21:44:13 +0000 (21:44 +0000)]
Provide some kind of __sync_bool_compare_and_swap_4(), as it is used by CK,
and our gcc is too ancient to provide it.
This should fix the build on mips.

7 years agoFix build with LLD by removing duplicate symbols already in IBVERBS_1.0.
bdrewery [Mon, 10 Apr 2017 21:26:37 +0000 (21:26 +0000)]
Fix build with LLD by removing duplicate symbols already in IBVERBS_1.0.

Reviewed by: emaste
MFC after: 2 weeks
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D10352

7 years agoBusy the map in vm_map_protect().
markj [Mon, 10 Apr 2017 21:01:42 +0000 (21:01 +0000)]
Busy the map in vm_map_protect().

We are otherwise susceptible to a race with a concurrent vm_map_wire(),
which may drop the map lock to fault pages into the object chain. In
particular, vm_map_protect() will only copy newly writable wired pages
into the top-level object when MAP_ENTRY_USER_WIRED is set, but
vm_map_wire() only sets this flag after its fault loop. We may thus end
up with a writable wired entry whose top-level object does not contain the
entire range of pages.

Reported and tested by: pho
Reviewed by: kib
MFC after: 1 week
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D10349

7 years agoregenerate src.conf.5 after r316647 and r316684
emaste [Mon, 10 Apr 2017 21:00:47 +0000 (21:00 +0000)]
regenerate src.conf.5 after r316647 and r316684

Sponsored by: The FreeBSD Foundation

7 years agoConsistently use for-loops in vm_map_protect().
markj [Mon, 10 Apr 2017 20:57:16 +0000 (20:57 +0000)]
Consistently use for-loops in vm_map_protect().

No functional change.

Reviewed by: kib
MFC after: 1 week
Sponsored by: Dell EMC Isilon
X-Differential Revision: https://reviews.freebsd.org/D10349

7 years agoAdd some bounds assertions to the vm_map_entry clip functions.
markj [Mon, 10 Apr 2017 20:55:42 +0000 (20:55 +0000)]
Add some bounds assertions to the vm_map_entry clip functions.

Reviewed by: kib
MFC after: 1 week
Sponsored by: Dell EMC Isilon
X-Differential Revision: https://reviews.freebsd.org/D10349

7 years agolibelf: add an assert that msz is non-zero
emaste [Mon, 10 Apr 2017 19:22:15 +0000 (19:22 +0000)]
libelf: add an assert that msz is non-zero

Reported by: Coverity
CID: 976023

7 years agoMake WITHOUT_TOOLCHAIN imply WITHOUT_LLD.
emaste [Mon, 10 Apr 2017 18:21:30 +0000 (18:21 +0000)]
Make WITHOUT_TOOLCHAIN imply WITHOUT_LLD.

LLD is a toolchain component.

7 years agoBump __FreeBSD_version due to r316648, rename of
pkelsey [Mon, 10 Apr 2017 17:59:29 +0000 (17:59 +0000)]
Bump __FreeBSD_version due to r316648, rename of
smp_no_redevous_barrier() to smp_no_rendezvous_barrier()

Reported by: jkim

7 years agoloader: r316585 did miss sparc/ofw
tsoome [Mon, 10 Apr 2017 17:57:56 +0000 (17:57 +0000)]
loader: r316585 did miss sparc/ofw

This update does add the code to pass partition size to vdev_probe() via
simple callback. Tested via tinderbox build, but not yet with actual boot.
The code can be improved still, but to verify the idea to read media
block size and amedia size has to be confirmed first.

Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D10302

7 years agoHandle NULL entries in gmirror disk ds_bios arrays.
markj [Mon, 10 Apr 2017 17:15:59 +0000 (17:15 +0000)]
Handle NULL entries in gmirror disk ds_bios arrays.

Entries may be removed and freed if an I/O error occurs during mirror
synchronization, so we cannot assume that all entries of ds_bios are
valid.

Also ensure that a synchronization BIO's array index is preserved after
a successful write.

Reported and tested by: pho
MFC after: 2 weeks
Sponsored by: Dell EMC Isilon

7 years agoDo not lose dirty bits for removing PROT_WRITE on arm64.
kib [Mon, 10 Apr 2017 15:32:26 +0000 (15:32 +0000)]
Do not lose dirty bits for removing PROT_WRITE on arm64.

Arm64 pmap interprets accessed writable ptes as modified, since
ARMv8.0 does not track Dirty Bit Modifier in hardware. If writable bit
is removed, page must be marked as dirty for MI VM.

This change is most important for COW, where fork caused losing
content of the dirty pages which were not yet scanned by pagedaemon.

Reviewed by: alc, andrew
Reported and tested by: Mark Millard <markmi@dsl-only.net>
PR: 217138, 217239
Sponsored by: The FreeBSD Foundation
MFC after: 2 weeks

7 years agoPort the IMX6 kernel configuration to use MULTIDELAY. This will help adding
andrew [Mon, 10 Apr 2017 12:35:58 +0000 (12:35 +0000)]
Port the IMX6 kernel configuration to use MULTIDELAY. This will help adding
the i.MX series of SoCs to the armv6 GENERIC kernel.

This uses updated times from ian@.

Reviewed by: ian
Sponsored by: ABT Systems Ltd

7 years agoDo not register in CTL portal groups without portals.
mav [Mon, 10 Apr 2017 10:38:12 +0000 (10:38 +0000)]
Do not register in CTL portal groups without portals.

From config synthax point of view such portal groups are not incorrect,
but they are useless since can not receive any connection.  And since
CTL port resource is very limited, it is good to save it.

MFC after: 2 weeks

7 years agoUse estimated RTT for receive buffer auto resizing instead of timestamps
smh [Mon, 10 Apr 2017 08:19:35 +0000 (08:19 +0000)]
Use estimated RTT for receive buffer auto resizing instead of timestamps

Switched from using timestamps to RTT estimates when performing TCP receive
buffer auto resizing, as not all hosts support / enable TCP timestamps.

Disabled reset of receive buffer auto scaling when not in bulk receive mode,
which gives an extra 20% performance increase.

Also extracted auto resizing to a common method shared between standard and
fastpath modules.

With this AWS S3 downloads at ~17ms latency on a 1Gbps connection jump from
~3MB/s to ~100MB/s using the default settings.

Reviewed by:    lstewart, gnn
MFC after:      2 weeks
Relnotes:       Yes
Sponsored by:   Multiplay
Differential Revision:  https://reviews.freebsd.org/D9668

7 years agoSpecial rendering methods for removing mouse cursors cannot be removed
bde [Mon, 10 Apr 2017 06:19:09 +0000 (06:19 +0000)]
Special rendering methods for removing mouse cursors cannot be removed
like I hoped, since they are needed for removing parts over the border.
Continue fixing bugs in them.

In the vga planar mode renderer, remove removal of the part of the
image over the text window.  This was hard-coded for nearly 8x16 fonts
and in practice didn't remove enough for 8x8 fonts.  This used the
wrong attribute over cutmarked regions.  The caller refreshes with the
correct attribute later, so the attribute bug only caused flicker.
The caller uses the same hard-coding, so the refreshes fix up all the
spots with the wrong attribute, but keep missing the missed spots.
This still gives trails of bits of cursors for cursor motions in the
affected configurations (mainly depth 4 modes with 8x8) fonts.  8x14
fonts barely escape the problem since although the cursor is drawn
as 16x16, its active part is only 9x13 and the active part fits in
the hard-coded 2x2 character cell window for 8x14 fonts.  8x8 fonts
need a 2x3 window.

In the fb non-sparc64 renderer, the buggy image removal was buggier
and was already avoided by returning before it.  Remove it completely
and fix nearby style bugs.  It was essentially the same as for the vga
planar mode renderer (obfuscated by swapping x and y).  This was buggier
since fb should handle more types of hardware so the hard-coding is
wronger.

The remaining fb image removal is also buggier.  It never supported
software cursors drawn into the border, and the hardware cursor is
probably broken by other bugs to be fixed soon.

7 years agoAdd support for imx6ul soc.
ian [Mon, 10 Apr 2017 02:46:39 +0000 (02:46 +0000)]
Add support for imx6ul soc.

7 years agoAvoid starvation of the server crash recovery thread for the NFSv4 client.
rmacklem [Mon, 10 Apr 2017 01:28:01 +0000 (01:28 +0000)]
Avoid starvation of the server crash recovery thread for the NFSv4 client.

This patch gives a requestor of the exclusive lock on the client state
in the NFSv4 client priority over shared lock requestors. This avoids
the server crash recovery thread being starved out by other threads doing
RPCs.

Tested by: cperciva
PR: 216087
MFC after: 2 weeks

7 years agoFix the NFSv4 client hndling of a stale write verifier in the Commit operation.
rmacklem [Sun, 9 Apr 2017 21:50:21 +0000 (21:50 +0000)]
Fix the NFSv4 client hndling of a stale write verifier in the Commit operation.

When the NFSv4 client Commit operation encountered a stale write verifier,
it erroneously mapped that to EIO. This could have caused recently written
data to be lost when a server crashes/reboots between an UNSTABLE write
and the subsequent commit. This patch fixes this.
The bug was only for the NFSv4 client and did not affect NFSv3.

Tested by: cperciva
PR: 215887
MFC after: 2 weeks

7 years agoFix the NFSv4.1 client for NFSERR_BADSESSION recovery via ReclaimComplete.
rmacklem [Sun, 9 Apr 2017 21:06:21 +0000 (21:06 +0000)]
Fix the NFSv4.1 client for NFSERR_BADSESSION recovery via ReclaimComplete.

For the ReclaimComplete operation, the RPC layer should not loop on
NFSERR_BADSESSION. If it does, the recovery thread (nfscl) can get stuck
looping and will not do a recovery.
This patch fixes it so it does not loop. This bug only affects NFSv4.1 and
only when a server reboots.

Tested by: cperciva
PR: 215886
MFC after: 2 weeks

7 years agoImport CK as of commit 6b141c0bdd21ce8b3e14147af8f87f22b20ecf32
cognet [Sun, 9 Apr 2017 21:02:05 +0000 (21:02 +0000)]
Import CK as of commit 6b141c0bdd21ce8b3e14147af8f87f22b20ecf32
This brings us changes we needed in ck_epoch.

7 years agoAdd code/constants for detecting imx6ul (ultralite) chips, a species of
ian [Sun, 9 Apr 2017 20:59:12 +0000 (20:59 +0000)]
Add code/constants for detecting imx6ul (ultralite) chips, a species of
imx6 based on a single cortex-a7 core.  Other changes to imx6 drivers
and support code are needed to fully support the imx6ul.

Also fix an indentation glitch committed in the prior change.

7 years agoUpdate the code that compensates for the lack of a GPC interrupt controller
ian [Sun, 9 Apr 2017 20:41:00 +0000 (20:41 +0000)]
Update the code that compensates for the lack of a GPC interrupt controller
driver for imx6.  Some newer dts source puts the GIC node at the root
instead of under /soc, so look in both places.  Also, sometimes the GIC
node doesn't list itself as its own interrupt-parent, allow that too.

7 years agoRemove some old interrupt handling workaround code from the pre-INTRNG days.
ian [Sun, 9 Apr 2017 18:31:33 +0000 (18:31 +0000)]
Remove some old interrupt handling workaround code from the pre-INTRNG days.

At this point, INTRNG is not going away (the option may go away, but the
code is not), so we no longer need code to support workarounds that handled
the lack of INTRNG functionality.

7 years agoAdding SIOCGIFNAME support in Linuxulator. This should silence the console warning...
avatar [Sun, 9 Apr 2017 15:27:04 +0000 (15:27 +0000)]
Adding SIOCGIFNAME support in Linuxulator.  This should silence the console warning associated
with linux-opera:
linux: pid 23492 (opera): ioctl fd=5, cmd=0x8910 ('\M^I',16) is not implemented
linux: pid 23492 (opera): ioctl fd=28, cmd=0x8910 ('\M^I',16) is not implemented
...

Reviewed by: kib, marcel, dchagin
Tested with: linux-opera-12.16_3
MFC after: 1 month

7 years agoMake setkey(8) more clear about anti-replay window size option semantics.
bcr [Sun, 9 Apr 2017 15:17:55 +0000 (15:17 +0000)]
Make setkey(8) more clear about anti-replay window size option semantics.

PR: 172913
Submitted by: john@saltant.com
Reviewed by: ae@
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D10304

7 years agoFix compilation of LinuxKPI for PowerPC.
hselasky [Sun, 9 Apr 2017 14:31:41 +0000 (14:31 +0000)]
Fix compilation of LinuxKPI for PowerPC.

Found by: emaste @
MFC after: 1 week
Sponsored by: Mellanox Technologies

7 years agoFix parsing failure for NFSv4 Setattr operation for failed case.
rmacklem [Sun, 9 Apr 2017 12:32:22 +0000 (12:32 +0000)]
Fix parsing failure for NFSv4 Setattr operation for failed case.

If an operation that preceeds a Setattr in an NFSv4 compound fails,
there is no bitmap of attributes to parse. Without this patch, the
parsing would fail and return EBADRPC instead of the correct failure
error. This could break recovery from a server crash/reboot.

Tested by: cperciva
PR: 215883
MFC after: 2 weeks

7 years agoloader: r316585 did miss userboot update
tsoome [Sun, 9 Apr 2017 11:16:16 +0000 (11:16 +0000)]
loader: r316585 did miss userboot update

The work to implement zfs reader to inspect all pool label copies did
miss the userboot, this update does correct this issue.

Since userboot is already using common/disk.c API (disk_open() etc),
the fix is quite simple - we only need to make sure the userdisk_iocl()
will call disk_ioctl(). In addition, the diskioctl callback does return
int, not pointer.

Note, the review request is actually addressing the sparc and userboot,
but as testing the fix for sparc will take some more time, I am posting the
userboot fix now.

This patch is part of the implementation presented in review:
https://reviews.freebsd.org/D10302

Once we have the sparc part tested, we will have the complete fix
for the issue.

Reviewed by: imp

7 years agoFix few minor issues found by Clang Analyzer.
mav [Sun, 9 Apr 2017 07:54:39 +0000 (07:54 +0000)]
Fix few minor issues found by Clang Analyzer.

MFC after: 2 weeks

7 years agoFix few minor issues found by Clang Analyzer.
mav [Sun, 9 Apr 2017 07:53:31 +0000 (07:53 +0000)]
Fix few minor issues found by Clang Analyzer.

MFC after: 2 weeks

7 years agoAdd missing double quote to fix r316635 commit.
kan [Sun, 9 Apr 2017 03:50:48 +0000 (03:50 +0000)]
Add missing double quote to fix r316635 commit.

7 years agoCorrected misspelled versions of rendezvous.
pkelsey [Sun, 9 Apr 2017 02:00:03 +0000 (02:00 +0000)]
Corrected misspelled versions of rendezvous.

The MFC will include a compat definition of smp_no_rendevous_barrier()
that calls smp_no_rendezvous_barrier().

Reviewed by: gnn, kib
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D10313

7 years agoIntroduce LLD_BOOTSTRAP to control lld as bootstrap linker
emaste [Sun, 9 Apr 2017 01:35:19 +0000 (01:35 +0000)]
Introduce LLD_BOOTSTRAP to control lld as bootstrap linker

Add WITH_LLD_BOOTSTRAP and WITHOUT_LLD_BOOTSTRAP knobs, similar to the
Clang bootstrap knobs.

Reviewed by: dim
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D10249

7 years agosh: Add test for unaliasing an alias that is currently in use.
jilles [Sat, 8 Apr 2017 21:57:59 +0000 (21:57 +0000)]
sh: Add test for unaliasing an alias that is currently in use.

This already works correctly.

7 years agoUnconditionally include arm64 in make universe / tinderbox
emaste [Sat, 8 Apr 2017 16:14:30 +0000 (16:14 +0000)]
Unconditionally include arm64 in make universe / tinderbox

As of r316629 FreeBSD/arm64 uses the in-tree LLD linker by default, and
does not require an external an aarch64-binutils port or package.

Sponsored by: The FreeBSD Foundation

7 years agoTrying to be more compatible with Linux if.h definitions:
avatar [Sat, 8 Apr 2017 14:41:39 +0000 (14:41 +0000)]
Trying to be more compatible with Linux if.h definitions:
- renaming l_ifreq::ifru_metric to l_ifreq::ifru_ivalue;
- adding a definition for ifr_ifindex which points to l_ifreq::ifru_ivalue.

A quick search indicates that Linux already got the above changes since 2.1.14.

Reviewed by: kib, marcel, dchagin
MFC after: 1 week

7 years agouse msr 0xc001100c to discover multi-node AMD processors
avg [Sat, 8 Apr 2017 14:16:42 +0000 (14:16 +0000)]
use msr 0xc001100c to discover multi-node AMD processors

This is applicable only to the older processors that do not have the AMD
Topology extension.
Opteron 6100-series "Magny-Cours" processors had multiple nodes within a
package and didn't have the Topology extension.  Without this change
FreeBSD would assume that those processors have a single L3 cache shared
by all cores while, in fact, each node has its own L3 cache.

Many thanks to Freddie Cash <fjwcash@gmail.com> for providing valuable
hardware information.

MFC after: 2 weeks