delphij [Wed, 17 Jun 2015 19:13:13 +0000 (19:13 +0000)]
MFC r264038 (theraven)
Fix an issue where the locale and rune locale could become out of sync,
causing mb* functions (and similar) to be called with the wrong data
(possibly a null pointer, causing a crash).
hselasky [Wed, 17 Jun 2015 07:43:20 +0000 (07:43 +0000)]
MFC r284012:
Disable VGA PCI interrupts until a chipset driver is loaded for VGA
PCI devices. Else unhandled display adapter interrupts might freeze
the CPU or consume a lot of CPU.
hselasky [Wed, 17 Jun 2015 07:28:51 +0000 (07:28 +0000)]
MFC r280991:
Extend fixes made in r278103 and r38754 by copying the complete packet
header and not only partial flags and fields. Firewalls can attach
classification tags to the outgoing mbufs which should be copied to
all the new fragments. Else only the first fragment will be let
through by the firewall. This can easily be tested by sending a large
ping packet through a firewall. It was also discovered that VLAN
related flags and fields should be copied for packets traversing
through VLANs. This is all handled by "m_dup_pkthdr()".
Regarding the MAC policy check in ip_fragment(), the tag provided by
the originating mbuf is copied instead of using the default one
provided by m_gethdr().
gshapiro [Wed, 17 Jun 2015 03:11:25 +0000 (03:11 +0000)]
MFC: The import of openssl to address the FreeBSD-SA-15:10.openssl security
advisory includes a change which rejects handshakes with DH parameters
below 768 bits. sendmail releases prior to 8.15.2 (not yet released),
defaulted to a 512 bit DH parameter setting for client connections.
This commit chages that default to 1024 bits. sendmail 8.15.2, when
released well use a default of 2048 bits.
dim [Mon, 8 Jun 2015 19:44:04 +0000 (19:44 +0000)]
MFC r283870:
Remove unneeded NULL checks in amd64's trap_fatal().
Since td_name is an array member of struct thread, it can never be NULL,
so the check can be removed. In addition, curproc can never be NULL,
so remove the if statement, and splice the two printfs() together.
While here, remove the u_long cast, and use the correct printf format
specifier curproc->p_pid.
jhb [Mon, 8 Jun 2015 18:59:14 +0000 (18:59 +0000)]
MFC 233665: (just to ps.1)
mandoc complains loudly when <TAB>s are misused in columnated lists. Fix
this syntax violation and while I'm here also convert <TAB> to Ta and adjust
quotation marks in order to prevent this problem in the future.
jhb [Sat, 6 Jun 2015 20:37:40 +0000 (20:37 +0000)]
MFC 261811,282660,282706:
Place VM objects on the object list when created and never remove them.
261811:
Fix function name in KASSERT().
282660:
Place VM objects on the object list when created and never remove them.
This is ok since objects come from a NOFREE zone and allows objects to
be locked while traversing the object list without triggering a LOR.
Ensure that objects on the list are marked DEAD while free or stillborn,
and that they have a refcount of zero. This required updating most of
the pagers to explicitly mark an object as dead when deallocating it.
(Only the vnode pager did this previously.)
282706:
Satisfy vm_object uma zone destructor requirements after r282660 when
vnode object creation raced.
jhb [Fri, 5 Jun 2015 20:38:22 +0000 (20:38 +0000)]
MFC 281932:
Rename the kld for oce(4) to if_oce.ko. ifconfig(8) has special knowledge
about kld filenames for network drivers that requires them to follow the
pattern of if_<foo>. This also fixes the existing documentation in the
manpage which says to use if_oce_load=YES in loader.conf.
jhb [Tue, 2 Jun 2015 15:12:33 +0000 (15:12 +0000)]
MFC 282417:
Various updates to the ftruncate(2) documentation:
- Note that ftruncate(2) can operate on shared memory objects and cross
reference shm_open(2).
- Note that ftruncate(2) does not change the file position pointer (aka
seek pointer) of the file descriptor.
- ftruncate(2) will fail with EINVAL for all sorts of other fd types than
just sockets, so instead note that it fails for all but regular files and
shared memory objects.
- Note that ftruncate(2) also appeared in 4.2BSD along with truncate(2).
(Or at least the manpage for both appeared in 4.2, I did not check the
kernel code itself to see if either predated 4.2.)
jhb [Mon, 1 Jun 2015 18:08:56 +0000 (18:08 +0000)]
MFC 283123:
Fix two bugs that could result in PMC sampling effectively stopping.
In both cases, the the effect of the bug was that a very small positive
number was written to the counter. This means that a large number of
events needed to occur before the next sampling interrupt would trigger.
Even with very frequently occurring events like clock cycles wrapping all
the way around could take a long time. Both bugs occurred when updating
the saved reload count for an outgoing thread on a context switch.
First, the counter-independent code compares the current reload count
against the count set when the thread switched in and generates a delta
to apply to the saved count. If this delta causes the reload counter
to go negative, it would add a full reload interval to wrap it around to
a positive value. The fix is to add the full reload interval if the
resulting counter is zero.
Second, occasionally the raw counter value read during a context switch
has actually wrapped, but an interrupt has not yet triggered. In this
case the existing logic would return a very large reload count (e.g.
2^48 - 2 if the counter had overflowed by a count of 2). This was seen
both for fixed-function and programmable counters on an E5-2643.
Workaround this case by returning a reload count of zero.
dim [Thu, 28 May 2015 06:45:13 +0000 (06:45 +0000)]
MFC r283254:
Ensure that the static structs emitted by the MODULE_DEPEND() and
MODULE_VERSION() macros don't end up as .comm symbols, when all the
version fields are zero.
Normally, such symbols will end up in .bss, but for kernel module
version objects, this can lead to "garbage" version numbers.
Fix this by instructing the compiler to always put these structs in the
.data segment instead.
hselasky [Wed, 27 May 2015 13:25:26 +0000 (13:25 +0000)]
MFC r283064:
Fix an off-by-one error by adding proper range checks when parsing the
HDA association descriptors. This fixes a crash during device probe
for some HDA PCI devices.
mav [Sun, 24 May 2015 17:16:55 +0000 (17:16 +0000)]
MFC r282881: Do not promote large async writes to sync.
Present implementation of large sync writes is too strict and so can be
quite slow. Instead of doing that, execute large async write in chunks,
syncing each chunk separately.
It would be good to fix large sync writes too, but I leave it to somebody
with more skills in this area.
ae [Thu, 21 May 2015 08:32:52 +0000 (08:32 +0000)]
MFC r282594:
m_dup() is supposed to give a writable copy of an mbuf chain. It uses
m_dup_pkthdr(), that uses M_COPYFLAGS mask to copy m_flags field.
If original mbuf chain has M_RDONLY flag, its copy also will have it.
Reset this flag explicitly.
hselasky [Thu, 21 May 2015 07:46:01 +0000 (07:46 +0000)]
MFC r282017:
Allow DSP basename cloning to be disabled or enabled at boot and
runtime. This is useful when implementing OSS sound stacks in
userspace via libcuse for example.
hselasky [Thu, 21 May 2015 06:58:19 +0000 (06:58 +0000)]
MFC r282817:
Apply proper locking when iterating the multicast addresses and add a
missing check for NULL from a non-blocking "kzalloc()" function call.
hselasky [Thu, 21 May 2015 06:34:06 +0000 (06:34 +0000)]
MFC r280495:
Implement a simple OID number garbage collector. Given the increasing
number of dynamically created and destroyed SYSCTLs during runtime it
is very likely that the current new OID number limit of 0x7fffffff can
be reached. Especially if dynamic OID creation and destruction results
from automatic tests. Additional changes:
- Optimize the typical use case by decrementing the next automatic OID
sequence number instead of incrementing it. This saves searching time
when inserting new OIDs into a fresh parent OID node.
- Add simple check for duplicate non-automatic OID numbers.
edwin [Mon, 18 May 2015 21:17:19 +0000 (21:17 +0000)]
MFC of 283079,tzdata9:
Update to tzdata2015d:
Release 2015d - 2015-04-24 08:09:46 -0700
Changes affecting future time stamps
Egypt will not observe DST in 2015 and will consider canceling it
permanently. For now, assume no DST indefinitely.
(Thanks to Ahmed Nazmy and Tim Parenti.)
Change affecting past and future time zone abbreviations
The abbreviations for Hawaii-Aleutian standard and daylight times
have been changed from HAST/HADT to HST/HDT, as per US Government
Printing Office style. This affects only America/Adak since 1983,
as America/Honolulu was already using the new style.
edwin [Mon, 18 May 2015 02:09:37 +0000 (02:09 +0000)]
MFC of 283042,tzdata9:
Update to tzdata2015c:
Release 2015c - 2015-04-11 08:55:55 -0700
Changes affecting future time stamps
Egypt's spring-forward transition is at 24:00 on April's last Thursday,
not 00:00 on April's last Friday. 2015's transition will therefore be on
Thursday, April 30 at 24:00, not Friday, April 24 at 00:00. Similar fixes
apply to 2026, 2037, 2043, etc. (Thanks to Steffen Thorsen.)
dim [Sun, 17 May 2015 20:39:29 +0000 (20:39 +0000)]
Merge r283036 from stable/10:
For clang 3.4.1, when using -fformat-extensions, and warning about the
FreeBSD-specific %D and %b printf format specifiers, avoid possible
argument overruns. Also reduce the differences with the version added
in r280031 (which has been sent upstream).
dim [Sat, 16 May 2015 23:18:30 +0000 (23:18 +0000)]
Bring the contrib/llvm/patches directory up-to-date for stable/9.
MFC r263892:
Add the llvm/clang patch for r263891.
MFC r264350:
Update the llvm/clang patch for r264345.
MFC r264828:
Add patches corresponding to r264826 and r264827
MFC r266630:
Add the clang patch for r265477. While here, add a description to the
patch for r263619, and unify all the URLs to point to svnweb.
MFC r266675:
Add the clang patch for r266674.
MFC r275651:
Add llvm patch corresponding to r275633.
MFC r275747:
Update llvm patches for r274286 and r275633 so all the tests will pass.
MFC r275760:
Add clang patch corresponding to r275759.
MFC r275772:
Update clang patch for r275759 to use correct test cases.
MFC r283015:
Bring the contrib/llvm/patches directory up-to-date.
MFC r263892:
Add the llvm/clang patch for r263891.
MFC r264350:
Update the llvm/clang patch for r264345.
MFC r266675:
Add the clang patch for r266674.
MFC r275651:
Add llvm patch corresponding to r275633.
MFC r275747:
Update llvm patches for r274286 and r275633 so all the tests will pass.
MFC r275760:
Add clang patch corresponding to r275759.
MFC r275772:
Update clang patch for r275759 to use correct test cases.
Partially merge r283015 from stable/10:
Additionally:
* Remove the clang patch corresponding to r263619, as ARM EABI
hard-float support was never MFC'd.
* Add clang patch corresponding to r279302.
dim [Sat, 16 May 2015 23:00:03 +0000 (23:00 +0000)]
Bring clang 3.4.1 in stable/9 in sync with the version in stable/10.
MFC r252503 (by andrew):
Work around an ARM EABI issue where clang would sometimes incorrectly align
the stack in a leaf function that uses TLS.
The issue is, when using TLS, the function is no longer a leaf as it calls
__aeabi_read_tp. With statically linked programs this is not an issue as
it doesn't make use of the stack, however with dynamically linked
applications we enter rtld which does use the stack and makes assumptions
about it's alignment.
This is only a temporary fix until a better patch can be made and submitted
upstream.
MFC r264826 (by emaste):
Merge LLVM r202188:
Debug info: Support variadic functions.
Variadic functions have an unspecified parameter tag after the last
argument. In IR this is represented as an unspecified parameter in the
subroutine type.
MFC r265477 (by emaste):
Merge -fstandalone-debug from Clang r198655:
Implement a new -fstandalone-debug option. rdar://problem/15685848
It controls everything that -flimit-debug-info used to, plus the
vtable type optimization. The old -fno-limit-debug-info option is now an
alias to -fstandalone-debug and vice versa.
Standalone is the default on Darwin until dtrace is updated to work with
non-standalone debug info (rdar://problem/15758808).
Note: I kept the LimitedDebugInfo name in CodeGenOptions::DebugInfoKind
because NoStandaloneDebugInfo sounded even more confusing.
MFC r269387 (by andrew):
Update the ARMv6 core clang targets to be an arm1176jzf-s. This brings us
in line with gcc in base as this makes llvm generate code for the armv6k
variant of the instruction set.
ngie [Fri, 15 May 2015 22:13:11 +0000 (22:13 +0000)]
MFC r280893,r280894,r280895:
r280893:
Cleanup and do minor refactoring before converting testcases to ATF
- Convert errx(-1, ..) to errx(1, ..)
- Move the aio(4) checks to a single function (aio_available); use modfind(2)
instead of depending on SIGSYS (doesn't work when aio(4) support is missing,
not documented in the aio syscall manpages).
- Use aio_available liberally in the testcase functions
- Use mkstemp(3) + unlink(2) instead of mktemp(3)
- Fix some -Wunused warnings
- Bump WARNS to 6
jilles [Thu, 14 May 2015 19:32:13 +0000 (19:32 +0000)]
MFC r282482: cp: Remove fts sorting.
In an attempt to improve performance, cp reordered directories first
(although the comment says directories last). This is not effective with new
UFS layout policies.
The sorting reorders multiple arguments passed to cp, which may be
undesirable.
Additionally, the comparison function does not induce a total order. Per
POSIX, this causes undefined behaviour in qsort().
NetBSD removed the sorting in 2009.
On filesystems that return directory entries in hash/btree order, sorting by
d_fileno before statting improves performance on large directories. However,
this can only be implemented in fts(3).
ae [Thu, 14 May 2015 11:52:27 +0000 (11:52 +0000)]
MFC r282578:
Mark data checksum as valid for multicast packets, that we send back
to myself via simloop.
Also remove duplicate check under #ifdef DIAGNOSTIC.
delphij [Wed, 13 May 2015 22:36:52 +0000 (22:36 +0000)]
MFC r279571,281563 (allanjude):
Add a new safetly belt to freebsd-update to prevent a user doing a minor
update (-pX) while having an unfinished major upgrade (9.x to 9.y)
Safetly belt can be disabled with the -F flag
Additionally, add the --not-running-from-cron flag they bypasses the TTY
requirement, and allows freebsd-update to be invoked by orchestration
frameworks, scripts, or otherwise.
ngie [Wed, 13 May 2015 10:43:49 +0000 (10:43 +0000)]
MFstable/10 r281951,r281954:
r281951:
Backport MHSIZE/MPKTHSIZE equivalents from head
These macros are equivalent to the ones on head, except they are only exposed
when _KERNEL is defined, i.e. to kernel code, whereas the code on head is exposed
to userland as well
This is for improved forwards compatibility with mbuf(9) macros in head@r277203+,
and is required for a clean MFC of r279393
Pad RX copy alignment calculation to avoid illegal memory accesses
The optimization made in r239940 is valid for struct mbuf's current structure
and size in FreeBSD, but hardcodes assumptions about sizes of struct mbuf,
which are unfortunately broken if additional data is added to the beginning of
struct mbuf
X-MFC note (discussed with rwatson):
This change requires the MPKTHSIZE definition, which is only available after
head@r277203 and will not be MFCed as it breaks mbuf(9) KPI.
A direct commit to stable/10 and merges to other branches to add the necessary
definitions to work with the code as-is will be done to facilitate this MFC
rmacklem [Sat, 9 May 2015 12:10:59 +0000 (12:10 +0000)]
MFC: r281628
mav@ has found that NFS servers exporting ZFS file systems
can perform better when using a 128K read/write data size.
This patch changes NFS_MAXDATA from 64K to 128K so that
clients can use 128K for NFS mounts to allow this.
The patch also renames NFS_MAXDATA to NFS_SRVMAXIO so
that it is clear that it applies to the NFS server side
only. It also avoids a name conflict with the NFS_MAXDATA
defined in rpcsvc/nfs_prot.h, that is used for userland RPC.
Update the Linux compatibility layer:
- Add more functions.
- Add some missing includes which are needed when the header files
are not included in a particular order.
- The kasprintf() function cannot be inlined due to using a variable
number of arguments. Move it to a C-file.
- Fix problems about 32-bit ticks wraparound and unsigned long
conversion. Jiffies or ticks in FreeBSD have integer type and are
not long.
- Add missing "order_base_2()" macro.
- Fix BUILD_BUG_ON() macro.
- Declare a missing symbol which is needed when compiling without -O2
- Clean up header file inclusions in the linux/completion.h, linux/in.h
and linux/fs.h header files.
hselasky [Tue, 5 May 2015 19:52:22 +0000 (19:52 +0000)]
MFC r282120:
The add_bounce_page() function can be called when loading physical
pages which pass a NULL virtual address. If the BUS_DMA_KEEP_PG_OFFSET
flag is set, use the physical address to compute the page offset
instead. The physical address should always be valid when adding
bounce pages and should contain the same page offset like the virtual
address.
mav [Mon, 4 May 2015 19:34:59 +0000 (19:34 +0000)]
MFC r281765:
Activate write-only optimization if bpf device opened with O_WRONLY.
dhclient opens bpf as write-only to send packets. It never reads received
packets from that descriptor, but processing them in kernel takes time.
Especially much time takes packet timestamping on systems with expensive
timecounter, such as bhyve guest, where network speed dropped in half.
rmacklem [Sat, 2 May 2015 12:58:04 +0000 (12:58 +0000)]
MFC: r281962
Fix the NFS server's handling of a bogus NFSv2 ROOT RPC.
The ROOT RPC is deprecated in the NFSv2 RFC, RFC-1094
and should never be used by a client.
MFC 280721:
Allow additional flags to be passed to netstat -i in the daily status check.
In particular, this allows an administrator to specify "-h" for human
readable output if that is preferred.
The default setting passes "-d", so that can be excluded by using a custom
setting.
Cleanup and do minor refactoring before converting testcases to ATF
- Convert errx(-1, ..) to errx(1, ..)
- Move the aio(4) checks to a single function (aio_available); use modfind(2)
instead of depending on SIGSYS (doesn't work when aio(4) support is missing,
not documented in the aio syscall manpages).
- Use aio_available liberally in the testcase functions
- Use mkstemp(3) + unlink(2) instead of mktemp(3)
- Fix some -Wunused warnings
- Bump WARNS to 6
MFC r273973: vt(4): Fix keyboard allocation when kbdmux(4) isn't used
The problem was that only the kbdmux keyboard index was saved in
vd->vd_keyboard. This index is -1 when kbdmux isn't used. In this
case, the keyboard was correctly allocated, but the returned index was
discarded.
MFC r281380:
Fix the IPV6_MULTICAST_IF sockopt handling. RFC 3493 says when the
interface index is specified as zero, the system should select the
interface to use for outgoing multicast packets. Even the comment
for the in6p_set_multicast_if() function says about index of zero.
But in fact for zero index the function just returns EADDRNOTAVAIL.
I.e. if you first set some interface and then will try reset it
with zero ifindex, you will get EADDRNOTAVAIL.
Reset im6o_multicast_ifp to NULL when interface index specified as
zero. Also return EINVAL in case when ifnet_byindex() returns NULL.
This will be the same behaviour as when ifindex is bigger than
V_if_index. And return EADDRNOTAVAIL only when interface is not
multicast capable.
MFC 281159:
Move the message complaining about failed system resource allocations
under bootverbose. Every example I've seen to date has been due to
an ACPI system resource device reserving a range that overlaps with
system memory (which ram0 attempts to reserve) or a local or I/O APIC
(which apic0 attempts to reserve). These are always harmless but look
scary to users.
MFC r281309:
Fix the check for maximum mbuf's size needed to send ND6 NA and NS.
It is acceptable that the size can be equal to MCLBYTES. In the later
KAME's code this check has been moved under DIAGNOSTIC ifdef, because
the size of NA and NS is much smaller than MCLBYTES. So, it is safe to
replace the check with KASSERT.
MFC r281670, r281703:
Drop experimental ext2fs dir_index support.
The htree directory index is a highly desirable feature for research
purposes and was meant to improve performance in our ext2/3 driver.
Unfortunately our implementation has two problems:
- It never really delivered any performance improvement.
- It appears to corrupt the filesystem in undetermined circumstances.
Strictly speaking dir_index is not required for read/write support in
ext2/3 and our limited ext4 support still works fine without it.
Regain stability in the ext2 driver by removing it. We may need it back
(fixed) if we want to support encrypted ext4 support but thanks to the
wonders of version control we can always revert this change and bring it
back.