Commit Graph

278634 Commits

Author SHA1 Message Date
Alexander Motin
c28220d866 vmd: Bypass MSI/MSI-X remapping when possible.
By default all VMD devices remap children MSI/MSI-X interrupts into their
own.  It creates additional isolation, but also complicates things due to
sharing, etc.  Fortunately some VMD devices can bypass the remapping.
Add tunable to control it for remap testing or if something go wrong.

MFC after:	2 weeks
2022-10-06 12:15:25 -04:00
Konstantin Belousov
9cabef3d14 ldd: use direct exec mode unconditionally
Trying to exec malformed or unusual binary, for instance, a non-FreeBSD
ABI, or using a non-standard interpreter, might give unexpected outcome.

Reported by:	The UK's National Cyber Security Centre (NCSC)
Reviewed by:	emaste, markj, philip
Discussed with:	jhb
Sponsored by:	The FreeBSD Foundation
admbug:	991
PR:	127276, 175339, 231926
MFC after:	1 week
Differential revision:	https://reviews.freebsd.org/D36650
2022-10-06 18:50:26 +03:00
Kristof Provost
4f756295e0 if_ovpn: ensure we're in net_epoch when calling ovpn_encap()
If the crypto callback is asynchronous we're no longer in net_epoch,
which ovpn_encap() (and ip_output() it calls) expect.

Ensure we've entered the epoch.

Do the same thing for the rx path.

Sponsored by:	Rubicon Communications, LLC ("Netgate")
2022-10-06 17:42:12 +02:00
Kornel Dulęba
6bdc398832 uart_dev_snps: Fix device probing
The "uart_bus_probe" function is used as a generic part of uart probe
logic. It returns a driver priority(negative number) if successful and
an error code otherwise.
Fix the error checking condition to account for that.
Also, while here return "BUS_PROBE_VENDOR", instead of "0".
This fixes uart on clearfog pro with recent DT.

PR:		266657
Reviewed by:	mw
Obtained from:	Semihalf
Differential Revision: https://reviews.freebsd.org/D36880
2022-10-06 16:42:51 +02:00
Kornel Dulęba
fdbd0ba75d test/sys/opencrypto: Fix NIST KAT parser iterator
When yield a.k.a "generator" iterator is used we need to return all
data using "yield", before returning from the function.
Because of that only encryption tests were run for AES-CBC, other modes
were affected as well.
Add one more loop to the iterator "next" routine to fix that.
This unveiled a problem in the GCM AEAD parser logic, which didn't
correctly handle tests cases with empty plaintext, i.e. AAD only.
Include the fix in this patch as it's a rather trivial one.

Obtained from:	Semihalf
Differential Revision: https://reviews.freebsd.org/D36861
2022-10-06 16:42:31 +02:00
Andrew Turner
dc39a3346e Make #if and #endif do what people expect in *_if.m
These are used in a few places. Pass them to the generated .c and .h
files to allow us to build the parts of the interface the kernel config
supports.

Reviewed by:	imp, jhb
Sponsored by:	The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D36882
2022-10-06 14:35:31 +01:00
Andrew Turner
232323a531 Stop relying on header pollution in sdhci_xenon.c
Include sys/malloc.h directly in sdhci_xenon.c to get the malloc(9)
definition rather than depend on header pollution.

Sponsored by:	The FreeBSD Foundation
2022-10-06 14:30:19 +01:00
Andrew Turner
e590c9eff8 Fix the options to build rk_usb2phy.c
We need to check for fdt rk_usb2phy on both sides of the '|'.

Sponsored by:	The FreeBSD Foundation
2022-10-06 14:30:18 +01:00
Hans Petter Selasky
9e0edafe92 uslcom(4): Clear stall at every open.
To avoid data loss, make sure both the receive and transmit data toggles
get reset, before trying to read or write any data.

MFC after:	1 week
Sponsored by:	NVIDIA Networking
2022-10-06 13:54:02 +02:00
Wanpeng Qian
84e8678870 nvmecontrol: Add Samsung Extended SMART Information logpage support
Samsung PM983 SSD has a 0xca logpage. It has more information compared
to Intel's this patch tested on PM983 M2 SSD and works as expected.

Reviewed by:		imp@
Approved by:		kp@
Event:			Aberdeen Hackathon 2022
Differential revision:	https://reviews.freebsd.org/D33749
2022-10-06 10:24:02 +00:00
Jake Freeland
4cb3cb2de2 LinuxKPI: Add pci_power querying for drm-kmod
Adds a few struct members and a function to get i915_runtime_pm_status()
to compile in drm-kmod.

Differential Revision:	https://reviews.freebsd.org/D36749
Sponsored by:   Google, Inc. (GSoC 2022)
2022-10-06 10:15:41 +02:00
John Baldwin
ba86cffb28 rs: Fix some pointer arith UB.
If the next column was blank, then the length of the following entry
was computed as the end of the following entry minus a global variable
"blank" which is not in the same string or allocation.  Instead, save
the start value of 'p' explicitly instead of abusing '*ep'.  Possibly
we should just increment p before saving it in sp in the 'blank' case,
but at worst that would just mean maxlen might be one char too large
which should be harmless.

Reviewed by:	brooks
Differential Revision:	https://reviews.freebsd.org/D36832
2022-10-05 16:48:05 -07:00
John Baldwin
e5f2d5b35e rs: Fix a use after free.
Using a pointer passed to realloc() after realloc() even for pointer
arithmetic is UB.  It also breaks in practice on CHERI systems as
the updated value of 'sp' in this case would have had the bounds from
the old allocation.

This would be much cleaner if elem were a std::vector<char *>.

Reviewed by:	brooks, emaste
Reported by:	GCC -Wuse-after-free
Differential Revision:	https://reviews.freebsd.org/D36831
2022-10-05 16:47:40 -07:00
John Baldwin
bb31e1bbf2 rs: Fix various harmless warnings.
- Add /* FALLTHROUGH */ comments for intentional fall throughs in
  getargs().

- Remove id strings to quiet -Wunused-const-variable warnings from
  GCC.

- While here, remove __FBSDID.

Reviewed by:	brooks
Differential Revision:	https://reviews.freebsd.org/D36830
2022-10-05 16:47:21 -07:00
John Baldwin
ae70e8838c msk: Use a void cast to mark values of dummy reads as unused.
Note that this required adding missing ()'s around the outermost level
of MSK_READ_MIB*.  Otherwise, the void cast was only applied to the
first register read.  This also meant that MSK_READ_MIB64 was pretty
broken as the uint64_t cast only applied to the first 16-bit register
read in each MSK_READ_MIB32 invocation and the 32-bit shift was only
applied to the second register read of the pair.

Reviewed by:	imp, emaste
Reported by:	GCC -Wunused-value
Differential Revision:	https://reviews.freebsd.org/D36777
2022-10-05 16:46:01 -07:00
John Baldwin
aabbe26939 msk: Don't bother reading spare stats registers.
msk_stats_update reads stats registers named "spare" whose values are
discarded.

Reviewed by:	imp, emaste
Differential Revision:	https://reviews.freebsd.org/D36871
2022-10-05 16:45:43 -07:00
John Baldwin
c1ae7841d4 arm64: Simplify initialization of pc_freemask.
Sponsored by:	DARPA
Differential Revision:	https://reviews.freebsd.org/D36502
2022-10-05 16:20:55 -07:00
Konstantin Belousov
2220b66fe0 Add mbuf_tstmp2timeval()
Reviewed by:	hselasky, jkim, rscheff
Sponsored by:	NVIDIA networking
MFC after:	1 week
Differential revision:	https://reviews.freebsd.org/D36870
2022-10-06 00:38:13 +03:00
Mark Johnston
2c9dc2384f vm_page: Fix a logic error in the handling of PQ_ACTIVE operations
As an optimization, vm_page_activate() avoids requeuing a page that's
already in the active queue.  A page's location in the active queue is
mostly unimportant.

When a page is unwired and placed back in the page queues,
vm_page_unwire() avoids moving pages out of PQ_ACTIVE to honour the
request, the idea being that they're likely mapped and so will simply
get bounced back in to PQ_ACTIVE during a queue scan.

In both cases, if the page was logically in PQ_ACTIVE but had not yet
been physically enqueued (i.e., the page is in a per-CPU batch), we
would end up clearing PGA_REQUEUE from the page.  Then, batch processing
would ignore the page, so it would end up unwired and not in any queues.
This can arise, for example, when a page is allocated and then
vm_page_activate() is called multiple times in quick succession.  The
result is that the page is hidden from the page daemon, so while it will
be freed when its VM object is destroyed, it cannot be reclaimed under
memory pressure.

Fix the bug: when checking if a page is in PQ_ACTIVE, only perform the
optimization if the page is physically enqueued.

PR:		256507
Fixes:		f3f38e2580 ("Start implementing queue state updates using fcmpset loops.")
Reviewed by:	alc, kib
MFC after:	1 week
Sponsored by:	E-CARD Ltd.
Sponsored by:	Klara, Inc.
Differential Revision:	https://reviews.freebsd.org/D36839
2022-10-05 15:12:46 -04:00
Daniel Engberg
070e8d36d9 grep: Add quotes in manpage when using wildcards with --include
Examples uses --include=*.h which doesn't work as intended

Approved by:	kevans
Differential Revision:	https://reviews.freebsd.org/D36883
2022-10-05 19:05:52 +02:00
Benedict Reuschling
d63104d253 Add information on how to load gmirror on boot to auto activate mirrors
PR:			234997
Reported by:		Michiel van Baak <michiel@vanbaak.eu>
Event:			Aberdeen Hackathon 2022
Differential Revision:	https://reviews.freebsd.org/D20577
2022-10-05 16:44:31 +00:00
Brooks Davis
c3fb59ed5c libc: Include quad support on long32 ABIs
Rather than not including it on all 64-bit platforms, just include it on
32-bit ones.

Reviewed by:	imp, jhb
Sponsored by:	DARPA, AFRL
Differential Revision:	https://reviews.freebsd.org/D36422
2022-10-05 17:27:44 +01:00
Brooks Davis
426fc376af bsd.cpu.mk: Introduce MACHINE_ABI
MACHINE_ABI is a list of properties of the ABI used for MACHINE_ARCH.
It should be used in place of long conditionals on MACHINE_ARCH where
practical.

The following properties are indicated with one of the follow values:

Byte order:                  big-endian, little-endian
Floating point ABI:          soft-float, hard-float
Size of long (size_t, etc):  long32, long64
Pointer type:                ptr32, ptr64
Size of time_t:              time32, time64

For example, i386 targets will be:
MACHINE_ABI=	big-endian hard-float long32 ptr32 time32

Reviewed by:	imp
Obtained from:	CheriBSD
Sponsored by:	DARPA, AFRL
Differential Revision:	https://reviews.freebsd.org/D36421
2022-10-05 17:27:44 +01:00
Brooks Davis
77becb9325 Rename MACHINE_ABI and TARGET_ABI
The MACHINE_ABI and TARGET_ABI variables are used to set the middle of
the target triple (e.g., "-unknown-" or "-gnueabihf-"). They are not set
by any tool in the base system and I've only found the latter mentioned
in one review online. As such, rename them to to MACHINE_TRIPLE_ABI and
TARGET_TRIPLE_ABI to clear the way to use MACHINE_ABI as a supplement to
MACHINE_CPU, etc.

Reviewed by:	imp, jhb
Obtained from:	CheriBSD
Sponsored by:	DARPA, AFRL
Differential Revision:	https://reviews.freebsd.org/D36420
2022-10-05 17:27:44 +01:00
Brooks Davis
d701f45aba Remove telnetd sources
Differential Revision:	https://reviews.freebsd.org/D36621
2022-10-05 17:27:14 +01:00
Kristof Provost
1d090028d3 pf: use time_to for timestamps
Use time_t rather than uint32_t to represent the timestamps. That means
we have 64 bits rather than 32 on all platforms except i386, avoiding
the Y2K38 issues on most platforms.

Reviewed by:	Zhenlei Huang
Sponsored by:	Rubicon Communications, LLC ("Netgate")
Differential Revision:	https://reviews.freebsd.org/D36837
2022-10-05 17:52:27 +02:00
Zhenlei Huang
1fc839f489 if_vxlan(4): Add missing statistic for input packets
Event:		Aberdeen hackathon 2022
Reviewed by:	bryanv, kp
Differential Revision:	https://reviews.freebsd.org/D36841
2022-10-05 12:38:30 +02:00
Kristof Provost
fd6ecc184d dhclient-script: cope with /32 address leases
On certain cloud platforms (Google Cloud, Packet.net and others) the
DHCP server offers a /32 address. This makes adding the default route
fail since it is not reachable via any interface. Linux's
dhclient-script seem to usually have a special case for that and
explicitly adds an interface route to the router's address.

FreeBSD's dhclient-script already has a special case for when the router
address is the same as the leased address. Now also add one for when
it's a different address that doesn't fall in the interface's subnet.

PR:		241792
Event:		Aberdeen hackathon 2022
Submitted by:	sigsys@gmail.com
Reviewed by:	dch, kp, bz (+1 on the idea, not reviewed), thj
MFC after:	1 week
2022-10-05 12:24:31 +02:00
Hans Petter Selasky
55a3bd000d usb(4): Make sure the enumeration thread doesn't loop too fast.
MFC after:	1 week
Sponsored by:	NVIDIA Networking
2022-10-05 12:12:33 +02:00
Ivan Quitschal
d2d3046436 vt(4): Clear paste buffer after pasting.
MFC after:	1 week
Sponsored by:	NVIDIA Networking
Differential Revision:	https://reviews.freebsd.org/D36042
2022-10-05 11:51:49 +02:00
Ivan Quitschal
90b8910054 vt(4): When cutting a line, append a newline character.
While at it optimise "case 3" into a default.
This way there is no need to initialize the "mark" variable in the beginning,
because all cases set it.

MFC after:	1 week
Sponsored by:	NVIDIA Networking
Differential Revision:	https://reviews.freebsd.org/D36042
2022-10-05 11:51:48 +02:00
Hans Petter Selasky
18a44589fc vt(4): Use define instead of numerical value.
No functional change intended.

MFC after:	1 week
Sponsored by:	NVIDIA Networking
2022-10-05 11:51:48 +02:00
Hans Petter Selasky
4ea90153ac vt(4): Make sure pressing the extend button updates the current selection.
MFC after:	1 week
Sponsored by:	NVIDIA Networking
2022-10-05 11:51:41 +02:00
Andrew Turner
fbc9f1b2d6 Remove an extra argument to SYSCTL_FOREACH
This was missed in e0853c9336.

Sponsored by:	The FreeBSD Foundation
2022-10-05 10:27:48 +01:00
Andrew Turner
e0853c9336 Use SYSCTL_FOREACH in drm2
This was added recently. Use it to get the correct _FOREACH macro.

Sponsored by:	The FreeBSD Foundation
2022-10-05 10:26:36 +01:00
Andrew Turner
9d4cff787e Remove pre-armv6 support from devmap
Remove an old code path that was used used by Armv4/5 so is unused now.

Sponsored by:	The FreeBSD Foundation
2022-10-05 09:56:17 +01:00
Michael Tuexen
8ff4fc03e6 traceroute6: fix capabilities for the rcv socket
On the receive socket, recvmsg() and poll()/select() is called.
Therefore, CAP_EVENT is needed in addition to CAP_RECV..

While there, check the socket for readbility before calling recvmsg().

Reviewed by:		markj@
MFC after:		3 days
Sponsored by:		Netflix, Inc.
Differential Revision:	https://reviews.freebsd.org/D36878
2022-10-04 23:40:29 +02:00
Gleb Smirnoff
b958b862b1 netlink: make it working without INET6 2022-10-04 14:39:49 -07:00
Gleb Smirnoff
a87d2d1830 netlink: fix standalone module build 2022-10-04 14:38:40 -07:00
Ed Maste
963c7b084b ssh-keysign: fix double free in error path
From OpenSSH-portable commit 141535b904b6, OpenBSD commit 3d21aa127b1f.

MFC after:		3 days
2022-10-04 16:34:37 -04:00
Ed Maste
666605ad2d ssh-keygen: fix double free in error path
From OpenSSH-portable commit 5062ad48814b, OpenBSD commit 39f35e16ba87.

MFC after:	3 days
2022-10-04 16:33:11 -04:00
Ed Maste
5e5ebbee81 ssh-keyscan: Strictly enforce the maximum allowed SSH2 banner size
From OpenSSH-portable commit ff89b1bed807, OpenBSD commit 6ae664f9f4db.

MFC after:	3 days
2022-10-04 16:30:00 -04:00
Martin Matuska
be181ee2a2 zfs: merge openzfs/zfs@d62bafee9
Notable upstream pull request merges:
  #13857 Enforce "-F" flag on resuming recv of full/newfs on existing dataset
  #13928 Revert "Reduce dbuf_find() lock contention"
  #13928 Dynamically size dbuf hash mutex array
  #13930 zpool: Don't print "repairing" on force faulted drives
  #13938 Bring per_txg_dirty_frees_percent back to 30
  #13939 Fix panic in dsl_process_sub_livelist for EINTR
  #13954 Fix bad free in skein code
  #13967 Fix potential NULL pointer dereference in dsl_dataset_promote_check()

Obtained from:	OpenZFS
OpenZFS commit:	d62bafee9f
2022-10-04 20:16:52 +02:00
Mark Johnston
6a720fb95a git-arc: Fix handling of review title containing double quotes 2022-10-04 13:05:54 -04:00
Mark Johnston
bdd101c4d4 dtrace: Add a "regs" variable
This allows invop-based providers (i.e., fbt and kinst) to expose the
register file of the CPU at the point where the probe fired.  It does
not work for SDT providers because their probes are implemented as plain
function calls and so don't save registers.  It's not clear what
semantics "regs" should have for them anyway.

This is akin to "uregs", which nominally provides access to the
userspace registers.  In fact, DIF already had a DIF_VAR_REGS variable
defined, it was simply unimplemented.

Usage example: print the contents of %rdi upon each call to
amd64_syscall():

    fbt::amd64_syscall:entry {printf("%x", regs[R_RDI]);}

Note that the R_* constants are defined in /usr/lib/dtrace/regs_x86.d.
Currently there are no similar definitions for non-x86 platforms.

Reviewed by:	christos
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D36799
2022-10-04 13:05:54 -04:00
Mark Johnston
cba2fa7c5b makefs: Add a cast to placate static analyzers
"prefixlen" will always be smaller than 32 but adding a cast is
harmless.

Reported by:	Coverity
2022-10-04 13:05:54 -04:00
Mark Johnston
d5dc278eec riscv: Apply 8d7ee2047c to the riscv pmap
Reviewed by:	alc
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D36840
2022-10-04 13:05:54 -04:00
Mark Johnston
d7eec79b70 makefs: Plug a memory leak
nvlist_find_string() would return a copy of the found value, but callers
assumed they would have to make their own copy.  It's simpler to change
nvlist_find_string() than it is to change callers, so do that.

Reported by:	Coverity
2022-10-04 13:05:54 -04:00
Andrew Turner
47218e711e Include opt_platform.h to ensure FDT is defined
We need to include opt_platform.h as it's where FDT will be defined.

Sponsored by:	The FreeBSD Foundation
2022-10-04 17:38:56 +01:00
Andrew Turner
89a9a13c1a Remove unneeded FDT checks from phydev and regdev
They are only ever built when FDT is enabled so there is no need to
check for it in the files.

Sponsored by:	The FreeBSD Foundation
2022-10-04 17:37:37 +01:00