]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/log
FreeBSD/FreeBSD.git
5 years agosfxge(4): remove duplicate NVRAM asserts
Andrew Rybchenko [Fri, 23 Nov 2018 10:21:50 +0000 (10:21 +0000)]
sfxge(4): remove duplicate NVRAM asserts

The checking performed in the ->envo_type_to_partn
internal method make these assertions unnecessary.

Submitted by:   Andy Moreton <amoreton at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18094

5 years agosfxge(4): precheck and verify flash writes
Andrew Rybchenko [Fri, 23 Nov 2018 10:21:36 +0000 (10:21 +0000)]
sfxge(4): precheck and verify flash writes

Read existing flash content before writing, so the flash write can be
avoided if the existing partition content matches the new image. This
avoids unnecessary write cycles for the flash device, and may also be
faster. If the flash does need to be updated, verify the content after
writing.

Note that reading the flash content after writing but before calling
efx_nvram-rw_finish() avoids firmware bug68170, which can lead to
signed image updates failing on Medford.

Submitted by:   Andy Moreton <amoreton at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18093

5 years agosfxge(4): fix check in NVRAM validate
Andrew Rybchenko [Fri, 23 Nov 2018 10:21:28 +0000 (10:21 +0000)]
sfxge(4): fix check in NVRAM validate

Submitted by:   Andy Moreton <amoreton at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D18092

5 years agosfxge(4): report correct partition write chunk size
Andrew Rybchenko [Fri, 23 Nov 2018 10:21:17 +0000 (10:21 +0000)]
sfxge(4): report correct partition write chunk size

If the firmware reports a non-zero write chunk size then nvram writes
may fail if a different granularity is used (e.g. for MUM firmware on
Sorrento).

Submitted by:   Andy Moreton <amoreton at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18091

5 years agosfxge(4): check NVRAM locking by partition ID
Andrew Rybchenko [Fri, 23 Nov 2018 10:21:06 +0000 (10:21 +0000)]
sfxge(4): check NVRAM locking by partition ID

Tracking which partition is locked avoids being overly conservative
when EFX_NVRAM_xxx maps to more than one partition (depnding on the
current port number).

Submitted by:   Andy Moreton <amoreton at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18090

5 years agosfxge(4): simplify NVRAM type to partition mappings
Andrew Rybchenko [Fri, 23 Nov 2018 10:20:55 +0000 (10:20 +0000)]
sfxge(4): simplify NVRAM type to partition mappings

Submitted by:   Andy Moreton <amoreton at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18089

5 years agosfxge(4): rename firmware update verify result cap field
Andrew Rybchenko [Fri, 23 Nov 2018 10:20:44 +0000 (10:20 +0000)]
sfxge(4): rename firmware update verify result cap field

The existing name confuses support for secure boot with
support for reporting a verify result after an NVRAM update.

As the capability only reports support for returning a verify
result, change the name to be less confusing.

Submitted by:   Andy Moreton <amoreton at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18088

5 years agosfxge(4): extend NVRAM RW finish to return verify result
Andrew Rybchenko [Fri, 23 Nov 2018 10:20:32 +0000 (10:20 +0000)]
sfxge(4): extend NVRAM RW finish to return verify result

Extend efx_nvram_rw_finish() to return firmware verify result code.

Submitted by:   Andy Moreton <amoreton at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18087

5 years agosfxge(4): report verify result from RW finish callback
Andrew Rybchenko [Fri, 23 Nov 2018 10:20:20 +0000 (10:20 +0000)]
sfxge(4): report verify result from RW finish callback

This makes the verify result visible to efx_nvram_rw_finish(), which
can be extended to report it in a later patch.

Submitted by:   Andy Moreton <amoreton at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18086

5 years agosfxge(4): simplify verify result handling
Andrew Rybchenko [Fri, 23 Nov 2018 10:20:08 +0000 (10:20 +0000)]
sfxge(4): simplify verify result handling

Simplify verify result handling in NVRAM update finish

Submitted by:   Andy Moreton <amoreton at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18085

5 years agosfxge(4): fix result code in MCDI NVRAM update finish
Andrew Rybchenko [Fri, 23 Nov 2018 10:19:57 +0000 (10:19 +0000)]
sfxge(4): fix result code in MCDI NVRAM update finish

Submitted by:   Andy Moreton <amoreton at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D18084

5 years agosfxge(4): copy new header from firmware src
Andrew Rybchenko [Fri, 23 Nov 2018 10:19:46 +0000 (10:19 +0000)]
sfxge(4): copy new header from firmware src

Submitted by:   Andrew Jackson <ajackson at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18083

5 years agosfxge(4): add RSS key size define
Andrew Rybchenko [Fri, 23 Nov 2018 09:16:07 +0000 (09:16 +0000)]
sfxge(4): add RSS key size define

Submitted by:   Ivan Malov <ivan.malov at oktetlabs.ru>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18082

5 years agosfxge(4): add API to set an RSS context for a filter
Andrew Rybchenko [Fri, 23 Nov 2018 09:15:56 +0000 (09:15 +0000)]
sfxge(4): add API to set an RSS context for a filter

Submitted by:   Mark Spender <mspender at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18081

5 years agosfxge(4): update RSS API to take RSS context parameter
Andrew Rybchenko [Fri, 23 Nov 2018 09:15:44 +0000 (09:15 +0000)]
sfxge(4): update RSS API to take RSS context parameter

Update efx_rx_scale_mode_set(), efx_rx_scale_key_set()
and efx_rx_scale_tbl_set().

Submitted by:   Mark Spender <mspender at solarflare.com>
Submitted by:   Ivan Malov <ivan.malov at oktetlabs.ru>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18080

5 years agosfxge(4): add API to allocate and free RSS contexts
Andrew Rybchenko [Fri, 23 Nov 2018 09:15:32 +0000 (09:15 +0000)]
sfxge(4): add API to allocate and free RSS contexts

Submitted by:   Mark Spender <mspender at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18079

5 years agosfxge(4): rename API to check Rx scale and hash support
Andrew Rybchenko [Fri, 23 Nov 2018 09:15:20 +0000 (09:15 +0000)]
sfxge(4): rename API to check Rx scale and hash support

Rename efx_rx_scale_support_get() to efx_rx_scale_default_support_get(),
and efx_rx_hash_support_get() to efx_rx_hash_default_support_get().

All these really report is whether an exclusive RSS context was
successfully acquired at efx_rx_init().

efx_rx_scale_support_get() sounds like it reports whether the device
supports RSS, and whether exclusive or shared contexts are supported,
but it doesn't do that. Renaming it to
efx_rx_scale_default_support_get() helps to reflect that it reports
what RSS support the client gets without trying to allocate RSS
contexts itself.

Also rename efx_rx_scale_support_t to efx_rx_scale_context_type_t, to
make the enum more suitable for specifying the type of an RSS context
to be allocated.

Submitted by:   Mark Spender <mspender at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18078

5 years agosfxge(4): add the max number of RSS exclusive contexts
Andrew Rybchenko [Fri, 23 Nov 2018 09:15:08 +0000 (09:15 +0000)]
sfxge(4): add the max number of RSS exclusive contexts

The patch adds enc_rx_scale_max_exclusive_contexts member
to nic_cfg_t structure and sets the corresponding values
for Siena, Huntington and Medford

Submitted by:   Mark Spender <mspender at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18077

5 years agosfxge(4): fix default RSS context check on Siena
Andrew Rybchenko [Fri, 23 Nov 2018 09:14:57 +0000 (09:14 +0000)]
sfxge(4): fix default RSS context check on Siena

Default RSS context check is carried out during filter
insertion on Siena and it needs to be fixed

Submitted by:   Mark Spender <mspender at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D18076

5 years agosfxge(4): define a handle to denote default RSS context
Andrew Rybchenko [Fri, 23 Nov 2018 09:14:45 +0000 (09:14 +0000)]
sfxge(4): define a handle to denote default RSS context

Make the existing filter-specific define more general.
This is the same as MC_CMD_RSS_CONTEXT_ALLOC_OUT_RSS_CONTEXT_ID_INVALID.

Submitted by:   Mark Spender <mspender at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18075

5 years agosfxge(4): insert filters for encapsulated packets
Andrew Rybchenko [Fri, 23 Nov 2018 09:03:32 +0000 (09:03 +0000)]
sfxge(4): insert filters for encapsulated packets

On Medford, with full-featured firmware running, encapsulated
packets may not be delivered unless filters are inserted for
them, as ordinary filters are not applied to encapsulated
packets. So filters for encapsulated packets need to be
inserted for each class of encapsulated packet. For simplicity,
catch-all filters are always inserted. These may match more
packets than the OS has asked for, but trying to insert more
precise filters increases complexity for little gain.

Submitted by:   Mark Spender <mspender at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18074

5 years agosfxge(4): support filters for encapsulated packets
Andrew Rybchenko [Fri, 23 Nov 2018 09:03:20 +0000 (09:03 +0000)]
sfxge(4): support filters for encapsulated packets

This supports filters which match all unicast or multicast
inner frames in VXLAN, GENEVE, or NVGRE packets.
(Additional fields to match on can be added easily.)

Submitted by:   Mark Spender <mspender at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18073

5 years agosfxge(4): use proper MCDI command for encap filters
Andrew Rybchenko [Fri, 23 Nov 2018 09:03:09 +0000 (09:03 +0000)]
sfxge(4): use proper MCDI command for encap filters

MC_CMD_FILTER_OP_IN_EXT is needed to set filters for encapsulated
packets.

Submitted by:   Mark Spender <mspender at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18072

5 years agosfxge(4): provide information about supported tunnels
Andrew Rybchenko [Fri, 23 Nov 2018 09:02:58 +0000 (09:02 +0000)]
sfxge(4): provide information about supported tunnels

VXLAN/NVGRE (and Geneve) support is available on SFN8xxx with
full-feature firmware variant running.

Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18071

5 years agosfxge(4): let caller know that queue is already flushed
Andrew Rybchenko [Fri, 23 Nov 2018 07:50:56 +0000 (07:50 +0000)]
sfxge(4): let caller know that queue is already flushed

Tx/Rx queue may be already flushed due to Tx/Rx error on the queue or
MC reboot. Caller needs to know that the queue is already flushed to
avoid waiting for flush done event.

Submitted by:   Andy Moreton <amoreton at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D18070

5 years agosfxge(4): fix error code usage
Andrew Rybchenko [Fri, 23 Nov 2018 07:50:45 +0000 (07:50 +0000)]
sfxge(4): fix error code usage

MCDI results returned in req.emr_rc have already been translated
from MC_CMD_ERR_* to errno names, so using an MC_CMD_ERR_* value
is incorrect.

Submitted by:   Andy Moreton <amoreton at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D18069

5 years agosfxge(4): fix out of bounds read in VIs allocation
Andrew Rybchenko [Fri, 23 Nov 2018 07:50:34 +0000 (07:50 +0000)]
sfxge(4): fix out of bounds read in VIs allocation

Submitted by:   Andy Moreton <amoreton at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D18068

5 years agosfxge(4): fix potential buffer overflow in Tx queue init
Andrew Rybchenko [Fri, 23 Nov 2018 07:50:22 +0000 (07:50 +0000)]
sfxge(4): fix potential buffer overflow in Tx queue init

Improve error checking to avoid a caller overflowing the MCDI
request buffer if the requested TXQ size was excessively large.

Submitted by:   Andy Moreton <amoreton at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D18067

5 years agosfxge(4): fix failure path in EF10 Tx queue PIO enable
Andrew Rybchenko [Fri, 23 Nov 2018 07:43:44 +0000 (07:43 +0000)]
sfxge(4): fix failure path in EF10 Tx queue PIO enable

Submitted by:   Andy Moreton <amoreton at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D18066

5 years agosfxge(4): add advanced function to extract FW version
Andrew Rybchenko [Fri, 23 Nov 2018 07:38:59 +0000 (07:38 +0000)]
sfxge(4): add advanced function to extract FW version

Some libefx-based drivers might need this functionality to
indicate DPCPU FW IDs as part of FW version info to assist
experienced users.

Submitted by:   Ivan Malov <ivan.malov at oktetlabs.ru>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18065

5 years agosfxge(4): add MCDI agnostic wrapper for MAC stats clear
Andrew Rybchenko [Fri, 23 Nov 2018 07:26:37 +0000 (07:26 +0000)]
sfxge(4): add MCDI agnostic wrapper for MAC stats clear

If a libefx-based driver needs some way to clear port statistics,
then an MCDI agnostic method is required.

Submitted by:   Ivan Malov <ivan.malov at oktetlabs.ru>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18064

5 years agoRevert "fork: fix use-after-free with vfork"
Mateusz Guzik [Fri, 23 Nov 2018 04:38:50 +0000 (04:38 +0000)]
Revert "fork: fix use-after-free with vfork"

This unreliably breaks libc handling of vfork where forking succeded,
but execve did not.

vfork code in libc performs waitpid with WNOHANG in case of failed exec.
With the fix exit codepath was waking up the parent before the child
fully transitioned to a zombie. Woken up parent would waitpid, which
could find a not-yet-zombie child and fail to reap it due to the WNOHANG
flag.

While removing the flag fixes the problem, it is not an option due to older
releases which would still suffer from the kernel change.

Revert the fix until a solution can be worked out.

Note that while use-after-free which gets back due to the revert is a real
bug, it's side-effects are limited due to the fact that struct proc memory
is never released by UMA.

5 years agoFix a minor typo in ipfw(8) manual page.
Guangyuan Yang [Fri, 23 Nov 2018 03:42:05 +0000 (03:42 +0000)]
Fix a minor typo in ipfw(8) manual page.

PR: 230747
Submitted by: f.toscan@hotmail.it
MFC after: 1 week

5 years agoMake sure the NFS readdir client fills in all "struct dirent" data.
Rick Macklem [Fri, 23 Nov 2018 00:17:47 +0000 (00:17 +0000)]
Make sure the NFS readdir client fills in all "struct dirent" data.

The NFS client code (nfsrpc_readdir() and nfsrpc_readdirplus()) wasn't
filling in parts of the readdir reply, such as d_pad[01] and the bytes
at the end of d_name within d_reclen. As such, data left in a buffer cache
block could be leaked to userland in the readdir reply.
This patch makes sure all of the data is filled in.

Reported by: Thomas Barabosch, Fraunhofer FKIE
Reviewed by: kib, markj
MFC after: 2 weeks

5 years agoAnnotate TDP_RFPPWAIT as unlikely.
Mateusz Guzik [Thu, 22 Nov 2018 21:38:24 +0000 (21:38 +0000)]
Annotate TDP_RFPPWAIT as unlikely.

The flag is only set on vfork, but is tested for *all* syscalls.
On amd64 this shortens common-case (not vfork) code.

5 years agofork: remove avoidable proc lock/unlock pair
Mateusz Guzik [Thu, 22 Nov 2018 21:29:36 +0000 (21:29 +0000)]
fork: remove avoidable proc lock/unlock pair

We don't have to access the process after making it runnable, so there
is no need to hold it either.

Sponsored by: The FreeBSD Foundation

5 years agofork: fix use-after-free with vfork
Mateusz Guzik [Thu, 22 Nov 2018 21:08:37 +0000 (21:08 +0000)]
fork: fix use-after-free with vfork

The pointer to the child is stored without any reference held. Then it is
blindly used to wait until P_PPWAIT is cleared. However, if the child is
autoreaped it could have exited and get freed before the parent started
waiting.

Use the existing hold mechanism to mitigate the problem. Most common case
of doing exec remains unchanged. The corner case of doing exit performs
wake up before waiting for holds to clear.

Reviewed by: kib
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D18295

5 years agoPlug some networking sysctl leaks.
Mark Johnston [Thu, 22 Nov 2018 20:49:41 +0000 (20:49 +0000)]
Plug some networking sysctl leaks.

Various network protocol sysctl handlers were not zero-filling their
output buffers and thus would export uninitialized stack memory to
userland.  Fix a number of such handlers.

Reported by: Thomas Barabosch, Fraunhofer FKIE
Reviewed by: tuexen
MFC after: 3 days
Security: kernel memory disclosure
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D18301

5 years agoA TCP stack is required to check SEG.ACK first, when processing a
Michael Tuexen [Thu, 22 Nov 2018 20:05:57 +0000 (20:05 +0000)]
A TCP stack is required to check SEG.ACK first, when processing a
segment in the SYN-SENT state as stated in Section 3.9 of RFC 793,
page 66. Ensure this is also done by the TCP RACK stack.

Reviewed by: rrs@
MFC after: 1 week
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D18034

5 years agoEnsure that the TCP RACK stack honours the setting of the
Michael Tuexen [Thu, 22 Nov 2018 20:02:39 +0000 (20:02 +0000)]
Ensure that the TCP RACK stack honours the setting of the
net.inet.tcp.drop_synfin sysctl-variable.

Reviewed by: rrs@
MFC after: 1 week
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D18033

5 years agoEnsure that the default RTT stack can make an RTT measurement if
Michael Tuexen [Thu, 22 Nov 2018 19:56:52 +0000 (19:56 +0000)]
Ensure that the default RTT stack can make an RTT measurement if
the TCP connection was initiated using the RACK stack, but the
peer does not support the TCP RACK extension.

This ensures that the TCP behaviour on the wire is the same if
the TCP connection is initated using the RACK stack or the default
stack.

Reviewed by: rrs@
MFC after: 1 week
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D18032

5 years agoEnsure that TCP RST-segments announce consistently a receiver window of
Michael Tuexen [Thu, 22 Nov 2018 19:49:52 +0000 (19:49 +0000)]
Ensure that TCP RST-segments announce consistently a receiver window of
zero. This was already done when sending them via tcp_respond().

Reviewed by: rrs@
MFC after: 1 week
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D17949

5 years agoClear unused bytes in ia32_osendsig().
Mark Johnston [Thu, 22 Nov 2018 17:51:19 +0000 (17:51 +0000)]
Clear unused bytes in ia32_osendsig().

Mirror the fix for the native i386 implementation from r218327.  This
code is compiled only when the non-default COMPAT_43 option is
configured.

Reported by: Ilja Van Sprundel <ivansprundel@ioactive.com>
Reviewed by: kib
MFC after: 3 days
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D18298

5 years agoproto: change device permissions to 0600
Ed Maste [Thu, 22 Nov 2018 16:55:09 +0000 (16:55 +0000)]
proto: change device permissions to 0600

C Turt reports that the driver is not thread safe and may have
exploitable races.

Note that the proto device is intended for prototyping and development,
and is not for use on production systems.  From the man page:

SECURITY CONSIDERATIONS
     Because programs have direct access to the hardware, the proto
     driver is inherently insecure.  It is not advisable to use this
     driver on a production machine.

The proto device is not included in any of FreeBSD's kernel config files
(although the module is built).

The issues in the proto device still need to be fixed, and the device is
inherently (and intentionally) insecure, but it might as well be limited
to root only.

admbugs: 782
Reported by: C Turt <ecturt@gmail.com>
MFC after: 3 days
Sponsored by: The FreeBSD Foundation

5 years agosfxge(4): limit max TXQ size on Medford to 2048
Andrew Rybchenko [Thu, 22 Nov 2018 16:15:24 +0000 (16:15 +0000)]
sfxge(4): limit max TXQ size on Medford to 2048

Queues with 4096 descriptors are not supported as the top bit is used for vfifo
stuffing.

Submitted by:   Mark Spender <mspender at solarflare.com>
Reviewed by:    gnn
Sponsored by:   Solarflare Communications, Inc.
MFC after:      2 days
Differential Revision:  https://reviews.freebsd.org/D8948

5 years agosfxge(4): support packed stream Rx mode in libefx
Andrew Rybchenko [Thu, 22 Nov 2018 14:31:35 +0000 (14:31 +0000)]
sfxge(4): support packed stream Rx mode in libefx

Submitted by:   Artem V. Andreev <Artem.Andreev@oktetlabs.ru>
Sponsored by:   Solarflare Communications, Inc.
Differential Revision:  https://reviews.freebsd.org/D18022

5 years agosfxge(4): cleanup: move into right place
Andrew Rybchenko [Thu, 22 Nov 2018 14:10:46 +0000 (14:10 +0000)]
sfxge(4): cleanup: move into right place

Due to incorrect merge the piece of code was put in incorrect
place and diverge from libefx in other locations.

Sponsored by:   Solarflare Communications, Inc.
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D18024

5 years agoAllow forced start of ipmon in special cases where testing is desired
Cy Schubert [Thu, 22 Nov 2018 04:48:27 +0000 (04:48 +0000)]
Allow forced start of ipmon in special cases where testing is desired
(or other special cases) and when ipfilter is disabled in rc.conf but
started by other means.

MFC after: 1 week

5 years agostrings: unbreak the build after r340746
Mateusz Guzik [Wed, 21 Nov 2018 22:37:49 +0000 (22:37 +0000)]
strings: unbreak the build after r340746

Discussed with: oshogbo
Sponsored by: The FreeBSD Foundation

5 years agouipc_usrreq: fix inode number assignment
Mateusz Guzik [Wed, 21 Nov 2018 22:25:05 +0000 (22:25 +0000)]
uipc_usrreq: fix inode number assignment

The code was incrementing a global variable in an unsafe manner.
Two different threads stating two different sockets could have resulted
in the same inode numbers assigned to both.

Creation is protected with a global lock, move the assigment there.
Since inode numbers are 64-bit now drop the check for overflows.

Sponsored by: The FreeBSD Foundation

5 years agoproc: update list manipulation comment on process exit
Mateusz Guzik [Wed, 21 Nov 2018 22:16:10 +0000 (22:16 +0000)]
proc: update list manipulation comment on process exit

Processes stay in the hash until they get reaped.

This code does not unlink the child from the parent, so remove
the claim that it does.

Sponsored by: The FreeBSD Foundation

5 years agouipc_shm: use unr64 for inode numbers
Mateusz Guzik [Wed, 21 Nov 2018 22:01:06 +0000 (22:01 +0000)]
uipc_shm: use unr64 for inode numbers

Sponsored by: The FreeBSD Foundation

5 years agostrings: fix style nits
Mariusz Zaborski [Wed, 21 Nov 2018 21:48:02 +0000 (21:48 +0000)]
strings: fix style nits

Reviewed by: cem, emaste, Joseph Koshy <jkoshy@users.sourceforge.net>
Differential Revision: https://reviews.freebsd.org/D18036

5 years agoFix CU: output of the --debug-dump=decodedline, the problem there
Maxim Sobolev [Wed, 21 Nov 2018 21:46:06 +0000 (21:46 +0000)]
Fix CU: output of the --debug-dump=decodedline, the problem there
is that both file name and current directory is recorded, however
file name sometimes already contains absolute path. In which case
prefixing it with directory name results in an invalid pathname.

Only append directory name if the file name does not start with '/'.
This seems to DTRT.

Approved by: emaste
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D18290

5 years agoproc: convert pfind & friends to use pidhash locks and other cleanup
Mateusz Guzik [Wed, 21 Nov 2018 20:15:56 +0000 (20:15 +0000)]
proc: convert pfind & friends to use pidhash locks and other cleanup

pfind_locked is retired as it relied on allproc which unnecessarily
restricts locking of the hash.

Sponsored by: The FreeBSD Foundation

5 years agoproc: implement pid hash locks and an iterator
Mateusz Guzik [Wed, 21 Nov 2018 18:56:15 +0000 (18:56 +0000)]
proc: implement pid hash locks and an iterator

forks, exits and waits are frequently stalled during poudriere -j 128 runs
due to killpg and process list exports performed for each package.

Both uses take the allproc lock. The latter case can be modified to iterate
over the hash with finer grained locking instead.

Reviewed by: kib
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D17817

5 years agoImprove two KASSERTs in the TCP RACK stack.
Michael Tuexen [Wed, 21 Nov 2018 18:19:15 +0000 (18:19 +0000)]
Improve two KASSERTs in the TCP RACK stack.

There are two locations where an always true comparison was made in
a KASSERT. Replace this by an appropriate check and use a consistent
panic message. Also use this code when checking a similar condition.

PR: 229664
Reviewed by: rrs@
MFC after: 1 week
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D18021

5 years agoRevert r340096: 9952 Block size change during zfs receive drops spill block
Alexander Motin [Wed, 21 Nov 2018 18:18:57 +0000 (18:18 +0000)]
Revert r340096: 9952 Block size change during zfs receive drops spill block

It was reported, and I easily reproduced it, that this change triggers panic
when receiving replication stream with enabled embedded blocks, when short
file compressing into one embedded block changes its block size.  I am not
sure that the problem is in this particuler patch, not just triggered by it,
but since investigation and fix will take some time, I've decided to revert
this for now.

PR: 198457, 233277

5 years agoAvoid unsynchronized updates to kn_status.
Mark Johnston [Wed, 21 Nov 2018 17:32:09 +0000 (17:32 +0000)]
Avoid unsynchronized updates to kn_status.

kn_status is protected by the kqueue's lock, but we were updating it
without the kqueue lock held.  For EVFILT_TIMER knotes, there is no
knlist lock, so the knote activation could occur during the kn_status
update and result in KN_QUEUED being lost, in which case we'd enqueue
an already-enqueued knote, corrupting the queue.

Fix the problem by setting or clearing KN_DISABLED before dropping the
kqueue lock to call into the filter.  KN_DISABLED is used only by the
core kevent code, so there is no side effect from setting it earlier.

Reported and tested by: Sylvain GALLIANO <sg@efficientip.com>
Reviewed by: kib
MFC after: 3 days
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D18060

5 years agoRemove KN_HASKQLOCK.
Mark Johnston [Wed, 21 Nov 2018 17:28:10 +0000 (17:28 +0000)]
Remove KN_HASKQLOCK.

It is a write-only flag whose last use was removed in r302235.

No functional change intended.

Reviewed by: kib
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D18059

5 years agoUse taskqueue_quiesce(9) to implement taskq_wait().
Mark Johnston [Wed, 21 Nov 2018 17:19:08 +0000 (17:19 +0000)]
Use taskqueue_quiesce(9) to implement taskq_wait().

PR: 227784
Reviewed by: cem
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D17975

5 years agoAdd a taskqueue_quiesce(9) KPI.
Mark Johnston [Wed, 21 Nov 2018 17:18:27 +0000 (17:18 +0000)]
Add a taskqueue_quiesce(9) KPI.

This is similar to taskqueue_drain_all(9) but will wait for the queue
to become idle before returning instead of only waiting for
already-enqueued tasks to finish.  This will be used in the opensolaris
compat layer.

PR: 227784
Reviewed by: cem
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D17975

5 years agoDTrace/powerpc: Fix FBT return probes
Justin Hibbits [Wed, 21 Nov 2018 16:47:11 +0000 (16:47 +0000)]
DTrace/powerpc: Fix FBT return probes

The FBT fuction boundary prober was setting one return probe marker value,
but the dtrace handler was expecting another.  This causes a hang when
tracing return probes.

5 years agoAdd some non-default src.conf(5) knob descriptions
Ed Maste [Wed, 21 Nov 2018 14:50:45 +0000 (14:50 +0000)]
Add some non-default src.conf(5) knob descriptions

Some WITH_/WITHOUT_ defaults will likey change in the future (e.g. as we
migrate to copyfree base system components).

Add non-default descriptions for the benefit of WIP branches.

5 years agoUnbreak kernel build with VLAN_ARRAY defined.
Oleg Bulyzhin [Wed, 21 Nov 2018 13:34:21 +0000 (13:34 +0000)]
Unbreak kernel build with VLAN_ARRAY defined.

MFC after: 1 week

5 years agoCross-reference libbe(3) and bectl(8).
Mateusz Piotrowski [Wed, 21 Nov 2018 12:46:28 +0000 (12:46 +0000)]
Cross-reference libbe(3) and bectl(8).

Those two manual pages are already referencing each other in the HISTORY
sections, which people might skip. Mention those manual pages explicitly in
the SEE ALSO sections.  Also, remove a reference to be(1) from libbe(3).

Reviewed by: bcr
Approved by: krion (mentor, implicit), mat (mentor, implicit)
Differential Revision: https://reviews.freebsd.org/D18136

5 years agolibbe(3): Put each error value in separate line.
Mateusz Piotrowski [Wed, 21 Nov 2018 11:22:44 +0000 (11:22 +0000)]
libbe(3): Put each error value in separate line.

As requested by a TODO in the source code.

Reviewed by: bcr
Approved by: krion (mentor, implicit), mat (mentor, implicit)
Differential Revision: https://reviews.freebsd.org/D18063

5 years agolinuxkpi: Use pageproc instead of vmproc
Ben Widawsky [Wed, 21 Nov 2018 04:34:18 +0000 (04:34 +0000)]
linuxkpi: Use pageproc instead of vmproc

According to markj@:
pageproc contains the page daemon and laundry threads, which are
responsible for managing the LRU page queues and writing back dirty
pages.  vmproc's main task is to swap out kernel stacks when the system
is under memory pressure, and swap them back in when necessary.  It's a
somewhat legacy component of the system and isn't required.  You can
build a kernel without it by specifying "options NO_SWAPPING" (which is
a somewhat misleading name), in which vm_swapout_dummy.c is compiled
instead of vm_swapout.c.

Based on this, we want pageproc to emulate kswapd, not vmproc.

Reviewed by: markj
Differential Revision: https://reviews.freebsd.org/D18061

5 years agoFix incorrect DSCP value range from 0..64 to 0..63.
Guangyuan Yang [Wed, 21 Nov 2018 00:22:31 +0000 (00:22 +0000)]
Fix incorrect DSCP value range from 0..64 to 0..63.

PR: 232786
Submitted by: Sergey Akhmatov <sergey@akhmatov.ru>
Reviewed by: AllanJude
MFC after: 1 week

5 years agoAdd definitions for Intel Speed Shift
Ben Widawsky [Wed, 21 Nov 2018 00:21:58 +0000 (00:21 +0000)]
Add definitions for Intel Speed Shift

These definitions will be used by a driver to implement Hardware
P-States (autonomous control of HWP, via Intel Speed Shift technology).

Reviewed by: kib
Approved by: emaste (mentor)
Differential Revision: https://reviews.freebsd.org/D18050

5 years agoRevert r340706. Some files became symlinks and vice versa.
Jung-uk Kim [Wed, 21 Nov 2018 00:00:00 +0000 (00:00 +0000)]
Revert r340706.  Some files became symlinks and vice versa.

Pointy hat to: jkim

5 years agogit-svn-init: Add docs to the choice of repos
Ben Widawsky [Tue, 20 Nov 2018 23:27:15 +0000 (23:27 +0000)]
git-svn-init: Add docs to the choice of repos

5 years agolinuxkpi: Remove duplicated text
Ben Widawsky [Tue, 20 Nov 2018 23:05:09 +0000 (23:05 +0000)]
linuxkpi: Remove duplicated text

Somehow this got botched while moving from git -> svn

5 years agolinuxkpi: Add some basic swap functions
Ben Widawsky [Tue, 20 Nov 2018 22:49:19 +0000 (22:49 +0000)]
linuxkpi: Add some basic swap functions

These are used by kms-drm to determine various heuristics relate
memory conditions.

The number of free swap pages is just a variable, and it can be
much cheaper by either adding a new getter, or simply extern'ing
swap_total. However, this patch opts to use the more expensive,
existing interface - since this isn't an operation in a high per
path.

This allows us to remove some more gpl linuxkpi and do the follo
kms-drm:
git rm linuxkpi/gplv2/include/linux/swap.h

Reviewed by:    mmacy, Johannes Lundberg <johalun0@gmail.com>
Approved by:    emaste (mentor)
Differential Revision:  https://reviews.freebsd.org/D18052

5 years agoDefine AHCI_PORT_IDENT and increase by 1 the VTBLK_BLK_ID_BYTES
Marcelo Araujo [Tue, 20 Nov 2018 22:21:19 +0000 (22:21 +0000)]
Define AHCI_PORT_IDENT and increase by 1 the VTBLK_BLK_ID_BYTES
to avoid buffer accessed out of bounds, also switch to snprintf(3).

PR: 200859
Submitted by: Caglar <caglar@10ur.org>
Obtained from: https://github.com/mist64/xhyve/pull/24
MFC after: 4 weeks
Sponsored by: iXsystems Inc.

5 years agoRemove stale manual pages after OpenSSL 1.1.1a merge.
Jung-uk Kim [Tue, 20 Nov 2018 22:12:10 +0000 (22:12 +0000)]
Remove stale manual pages after OpenSSL 1.1.1a merge.

5 years agoMerge OpenSSL 1.1.1a.
Jung-uk Kim [Tue, 20 Nov 2018 21:10:04 +0000 (21:10 +0000)]
Merge OpenSSL 1.1.1a.

5 years agocsu: use BSD-1-clause license on csu files
Ed Maste [Tue, 20 Nov 2018 21:04:20 +0000 (21:04 +0000)]
csu: use BSD-1-clause license on csu files

Copyright on these files is held by kib@ and/or the Foundation, and both
agree to this change.

Approved by: kib

5 years agoAdd NT_FREEBSD_FEATURE_CTL ELF note to csu
Ed Maste [Tue, 20 Nov 2018 20:59:49 +0000 (20:59 +0000)]
Add NT_FREEBSD_FEATURE_CTL ELF note to csu

This note will be used to allow binaries to opt out of, or in to,
upcoming vulnerability mitigation and other features.  It is not yet
connected but being added now to facilitate testing and ensure
compatibility with existing kernels and tools.

Reviewed by: brooks, jhb, kib, markj
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D17438

5 years agoClear pad bytes in the struct exported by kern.ntp_pll.gettime.
Mark Johnston [Tue, 20 Nov 2018 20:32:10 +0000 (20:32 +0000)]
Clear pad bytes in the struct exported by kern.ntp_pll.gettime.

Reported by: Thomas Barabosch, Fraunhofer FKIE
MFC after: 3 days
Sponsored by: The FreeBSD Foundation

5 years agoEnable evdev on ppc32
Niclas Zeising [Tue, 20 Nov 2018 19:31:02 +0000 (19:31 +0000)]
Enable evdev on ppc32

Enable evdev on ppc32 as well, similar to what was done i386 and amd64 in
r340387 and ppc64 in r340632.

Evdev can be used by X and is used by wayland to handle input devices.

Approved by: jhibbits
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D18049

5 years agoImport OpenSSL 1.1.1a.
Jung-uk Kim [Tue, 20 Nov 2018 18:59:41 +0000 (18:59 +0000)]
Import OpenSSL 1.1.1a.

5 years agoMake multiline APPLY_MASK() macro to be function-like.
Andrey V. Elsukov [Tue, 20 Nov 2018 18:38:28 +0000 (18:38 +0000)]
Make multiline APPLY_MASK() macro to be function-like.

Reported by: cem
MFC after: 1 week

5 years agoPlug a trivial memory leak.
Mark Johnston [Tue, 20 Nov 2018 18:13:18 +0000 (18:13 +0000)]
Plug a trivial memory leak.

CID: 1396911
MFC with: r340485

5 years agoAvoid clobbering a user-specified -g value after r340547.
Mark Johnston [Tue, 20 Nov 2018 18:10:56 +0000 (18:10 +0000)]
Avoid clobbering a user-specified -g value after r340547.

CID: 1396919
MFC with: r340547

5 years agostand: remove CLANG_NO_IAS from btx and gptboot
Ed Maste [Tue, 20 Nov 2018 16:54:42 +0000 (16:54 +0000)]
stand: remove CLANG_NO_IAS from btx and gptboot

Many components under stand/ had CLANG_NO_IAS added when Clang's
Integrated Assembler (IAS) did not handle .codeNN directives.  Clang
gained support quite some time ago, and we can now build stand/ with
IAS.

Note that in some cases there are small differences in the generated
output, so CLANG_NO_IAS should be removed only after testing (or after
finding no differences in the output).

PR: 205250, 233094
Sponsored by: The FreeBSD Foundation

5 years agotmpfs: use unr64 for inode numbers
Mateusz Guzik [Tue, 20 Nov 2018 15:14:30 +0000 (15:14 +0000)]
tmpfs: use unr64 for inode numbers

Sponsored by: The FreeBSD Foundation

5 years agoHandle kernel superpage mappings in pmap_remove_l2().
Mark Johnston [Tue, 20 Nov 2018 15:12:37 +0000 (15:12 +0000)]
Handle kernel superpage mappings in pmap_remove_l2().

PR: 233088
Reviewed by: alc, andrew, kib
Tested by: sbruno
MFC after: 3 days
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D17981

5 years agopipe: use unr64
Mateusz Guzik [Tue, 20 Nov 2018 14:59:27 +0000 (14:59 +0000)]
pipe: use unr64

Reviewed by: kib
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D18054

5 years agoImplement unr64
Mateusz Guzik [Tue, 20 Nov 2018 14:58:41 +0000 (14:58 +0000)]
Implement unr64

Important users of unr like tmpfs or pipes can get away with just
ever-increasing counters, making the overhead of managing the state
for 32 bit counters a pessimization.

Change it to an atomic variable. This can be further sped up by making
the counts variable "allocate" ranges and store them per-cpu.

Reviewed by: kib
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D18054

5 years agortld: when immediate bind mode is requested, process irelocs in PLT
Konstantin Belousov [Tue, 20 Nov 2018 14:52:43 +0000 (14:52 +0000)]
rtld: when immediate bind mode is requested, process irelocs in PLT
immediately after other PLT relocs.

Otherwise, if the object has relro page, we write to readonly page,
and we would need to use mprotect(2) two more times to fix it.  Note
that resolve_object_ifunc() does nothing when called second time, so
there is no need to avoid existing call.

Reported and tested by: emaste
PR: 233333
Sponsored by: The FreeBSD Foundation
MFC after: 1 week

5 years agoFix another user address dereference in linux_sendmsg syscall.
Tijl Coosemans [Tue, 20 Nov 2018 14:18:57 +0000 (14:18 +0000)]
Fix another user address dereference in linux_sendmsg syscall.

This was hidden behind the LINUX_CMSG_NXTHDR macro which dereferences its
second argument.  Stop using the macro as well as LINUX_CMSG_FIRSTHDR.  Use
the size field of the kernel copy of the control message header to obtain
the next control message.

PR: 217901
MFC after: 2 days
X-MFC-With: r340631

5 years agoports(7): Do not mention deprecated WITH_OPENSSL_PORT.
Mateusz Piotrowski [Tue, 20 Nov 2018 10:01:56 +0000 (10:01 +0000)]
ports(7): Do not mention deprecated WITH_OPENSSL_PORT.

Reviewed by: eadler
Approved by: krion (mentor, implicit), mat (mentor, implicit)
Differential Revision: https://reviews.freebsd.org/D18045

5 years agoEnsure that all values of ns, us and ms work for {n,u,m}stosbt
Warner Losh [Tue, 20 Nov 2018 07:11:23 +0000 (07:11 +0000)]
Ensure that all values of ns, us and ms work for {n,u,m}stosbt

Integer overflows and wrong constants limited the accuracy of these
functions and created situatiosn where sbttoXs(Xstosbt(Y)) != Y. This
was especailly true in the ns case where we had millions of values
that were wrong.

Instead, used fixed constants because there's no way to say ceil(X)
for integer math. Document what these crazy constants are.

Also, use a shift one fewer left to avoid integer overflow causing
incorrect results, and adjust the equasion accordingly. Document this.

Allow times >= 1s to be well defined for these conversion functions
(at least the Xstosbt). There's too many users in the tree that they
work for >= 1s.

This fixes a failure on boot to program firmware on the mlx4
NIC. There was a msleep(1000) in the code. Prior to my recent rounding
changes, msleep(1000) worked, but msleep(1001) did not because the old
code rounded to just below 2^64 and the new code rounds to just above
it (overflowing, causing the msleep(1000) to really sleep 1ms).

A test program to test all cases will be committed shortly. The test
exaustively tries every value (thanks to bde for the test).

Sponsored by: Netflix, Inc
Differential Revision: https://reviews.freebsd.org/D18051

5 years agoImprove sanity checking for the dircount hint argument to
Rick Macklem [Tue, 20 Nov 2018 01:59:57 +0000 (01:59 +0000)]
Improve sanity checking for the dircount hint argument to
NFSv3's ReaddirPlus and NFSv4's Readdir operations. The code
checked for a zero argument, but did not check for a very large value.
This patch clips dircount at the server's maximum data size.

MFC after: 1 week

5 years agonfsm_advance() would panic() when the offs argument was negative.
Rick Macklem [Tue, 20 Nov 2018 01:56:34 +0000 (01:56 +0000)]
nfsm_advance() would panic() when the offs argument was negative.
The code assumed that this would indicate a corrupted mbuf chain, but
it could simply be caused by bogus RPC message data.
This patch replaces the panic() with a printf() plus error return.

MFC after: 1 week

5 years agor304026 added code that started statistics gathering for an operation
Rick Macklem [Tue, 20 Nov 2018 01:52:45 +0000 (01:52 +0000)]
r304026 added code that started statistics gathering for an operation
before the operation number (the variable called "op") was sanity checked.
This patch moves the code down to below the range sanity check for "op".

5 years agoGiven that the idea of D15374 was to "make memmove a first class citizen",
Marius Strobl [Tue, 20 Nov 2018 00:08:33 +0000 (00:08 +0000)]
Given that the idea of D15374 was to "make memmove a first class citizen",
provide a _MEMMOVE extension of _MEMCPY that deals with overlap based on
the previous bcopy(9) implementation and use the former for bcopy(9) and
memmove(9). This addresses my D15374 review comment, avoiding extra MOVs
in case of memmove(9) and trashing the stack pointer.

5 years agopom: Fix fencepost bugs.
Thomas Munro [Tue, 20 Nov 2018 00:06:53 +0000 (00:06 +0000)]
pom: Fix fencepost bugs.

Under some conditions pom would report "waning" and then "full", show
higher percentages than it should, and get confused by DST.  Fix.

Before:

  2018.01.30: The Moon is Waxing Gibbous (97% of Full)
  2018.01.31: The Moon is Waning Gibbous (100% of Full)
  2018.02.01: The Moon is Full
  2018.02.02: The Moon is Waning Gibbous (98% of Full)

After:

  2018.01.30: The Moon is Waxing Gibbous (96% of Full)
  2018.01.31: The Moon is Waxing Gibbous (99% of Full)
  2018.02.01: The Moon is Full
  2018.02.02: The Moon is Waning Gibbous (97% of Full)

PR:                    231705
Submitted by:          Andrew Gierth
Approved by:           allanjude (mentor)
MFC after:             2 weeks
Differential Revision: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=231705

5 years agoFor consistency within the front-end, prefer SDHCI_{READ,WRITE}_{2,4}()
Marius Strobl [Mon, 19 Nov 2018 23:56:33 +0000 (23:56 +0000)]
For consistency within the front-end, prefer SDHCI_{READ,WRITE}_{2,4}()
to sdhci_acpi_{read,write}_{2,4}() in the sdhci_acpi_set_uhs_timing()
added in r340543.