Commit Graph

293311 Commits

Author SHA1 Message Date
Jessica Clarke 3cded05922 tmpfs: Fix OOB write when setting vfs.tmpfs.memory_percent
tmpfs_mem_percent is an int not a long, so on a 64-bit system this
writes 4 bytes past the end of the variable. The read above is correct,
so this was likely a copy paste error from sysctl_mem_reserved.

Found by:	CHERI
Fixes:		636592343c ("tmpfs: increase memory reserve to a percent of available memory + swap")
2024-08-15 20:33:22 +01:00
Pierre Pronchery ef9fc9609a sys: Mark ACL conversion routines as __result_use_check
Both acl_copy_oldacl_into_acl() and acl_copy_acl_into_oldacl() may fail
in some circumstances (e.g., acl.acl_cnt exceeding the capacity of
OLDACL_MAX_ENTRIES).  This change marks both routines with
__result_use_check, enforcing check for errors by the caller.

Suggested by:	markj
Reviewed by:	markj, emaste
Sponsored by:	The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D46254
2024-08-15 15:04:29 -04:00
Mark Johnston bef079254f arm64: Clamp segment sizes properly in bounce_bus_dmamap_load_buffer()
Commit 099b595154 ("Improve loading of multipage aligned buffers.")
modified bounce_bus_dmamap_load_buffer() with the assumption that busdma
memory allocations are physically contiguous, which is not always true:
bounce_bus_dmamem_alloc() will allocate memory with
kmem_alloc_attr_domainset() in some cases, and this function is not
guaranteed to return contiguous memory.

The damage seems to have been mitigated for most consumers by clamping
the segment size to maxsegsz, but this was removed in commit
a77e1f0f81 ("busdma: better handling of small segment bouncing"); in
practice, it seems busdma memory is often allocated with maxsegsz ==
PAGE_SIZE.  In particular, after commit a77e1f0f81 I see occasional
random kernel memory corruption when benchmarking TCP through mlx5
interfaces.

Fix the problem by using separate flags for contiguous and
non-contiguous busdma memory allocations, and using that to decide
whether to clamp.

Fixes:	099b595154 ("Improve loading of multipage aligned buffers.")
Fixes:	a77e1f0f81 ("busdma: better handling of small segment bouncing")
Sponsored by:	Klara, Inc.
Sponsored by:	Stormshield
Differential Revision:	https://reviews.freebsd.org/D46238
2024-08-15 14:19:22 +00:00
Cheng Cui 8cc528c682 tcp cc: clean up some un-used cc_var flags
Reviewed by: tuexen
Differential Revision: https://reviews.freebsd.org/D46299
2024-08-15 09:33:04 -04:00
Martin Matuska 29dc934914 zfs: merge openzfs/zfs@d2ccc2155
Notable upstream pull request merges:
 #16431 244ea5c48 Add missing kstats to dataset kstats

Obtained from:	OpenZFS
OpenZFS commit: d2ccc21552
2024-08-15 13:30:31 +02:00
Kristof Provost 9aeee9486a pf tests: basic test for sticky-address configuration on rules
There was a bug in pf_handle_get_addr() where it confused the counter and
pointer in the pf_addr_wrap.p union, causing panics. Test for this.

Sponsored by:	Rubicon Communications, LLC ("Netgate")
2024-08-15 11:11:59 +02:00
Kajetan Staszkiewicz 1fc0dac54c pf: Convert struct pf_addr_wrap before sending it over netlink
The struct pf_addr_wrap when used inside of kernel operates on pointers to
tables or interfaces. When reading a ruleset the struct must contain
counters calculated from the aforementioned tables and interfaces. Both the
pointers and the resulting counters are stored in an union and thus can't be
present in the struct at the same time.

The original ioctl code handles this by making a copy of struct pf_addr_wrap
for pool addresses, accessing the table or interface structures by their
pointers, calculating the counter values and storing them in place of those
pointers in the copy. Then this copy is sent over ioctl.

Use this mechanism for netlink too. Create a copy of src/dst addresses. Use
the existing function pf_addr_copyout() to convert pointers to counters both
for src/dst and pool addresses.

Reviewed by:	kp
Differential Revision:	https://reviews.freebsd.org/D46291
2024-08-15 11:11:59 +02:00
Kajetan Staszkiewicz 6c479edc61 pf: Fix indentation in struct pf_ksrc_node
This is a purely cosmetic change to simplify future diffs.

Reviewed by:	kp
Differential Revision:	https://reviews.freebsd.org/D46298
2024-08-15 09:36:18 +02:00
Igor Ostapenko 09b7a03862 pf tests: Add 'mbuf' test for (*m0)->m_len < sizeof(struct ip) cases
Reviewed by:	kp
Differential Revision:	https://reviews.freebsd.org/D45927
2024-08-15 09:28:13 +02:00
Igor Ostapenko 8aaffd78c0 Add dummymbuf module for testing purposes
Reviewed by:	kp
Differential Revision:	https://reviews.freebsd.org/D45928
2024-08-15 09:28:13 +02:00
Jitendra Patidar d2ccc21552 Fix projid accounting for xattr objects
zpool upgraded with 'feature@project_quota' needs re-layout of SA's
to fix the SA_ZPL_PROJID at SA_PROJID_OFFSET (128). Its necessary for
the correct accounting of object usage against its projid.
Old object (created before upgrade) when gets a projid assigned, its
SA gets re-layout via sa_add_projid(). If object has xattr dir, SA
of xattr dir also gets re-layout. But SA re-layout of xattr objects
inside a xattr dir is not done.

Fix zfs_setattr_dir() to re-layout SA's on xattr objects, when setting
projid on old xattr object (created before upgrade).

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Jitendra Patidar <jitendra.patidar@nutanix.com>
Closes #16355
Closes #16356
2024-08-14 17:59:19 -07:00
Paul Dagnelie bd4f2023bb Add missing kstats to dataset kstats
Reviewed-by: Tony Nguyen <tony.nguyen@delphix.com>
Reviewed-by: Rob Norris <robn@despairlabs.com>
Signed-off-by: Paul Dagnelie <pcd@delphix.com>
Closes #16431
(cherry picked from commit 244ea5c488)
2024-08-14 15:42:00 -07:00
Paul Dagnelie 244ea5c488 Add missing kstats to dataset kstats
Reviewed-by: Tony Nguyen <tony.nguyen@delphix.com>
Reviewed-by: Rob Norris <robn@despairlabs.com>
Signed-off-by: Paul Dagnelie <pcd@delphix.com>
Closes #16431
2024-08-14 14:18:46 -07:00
Tony Hutter d06de4f007 ZTS: Use /dev/urandom instead of /dev/random
Use /dev/urandom so we never have to wait on entropy.

Reviewed-by: George Melikov <mail@gmelikov.ru>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tony Hutter <hutter2@llnl.gov>
Closes #16442
2024-08-14 12:27:07 -07:00
Gleb Smirnoff b458ddf27f zfs: fix build without MAC 2024-08-14 09:06:31 -07:00
Warner Losh ca83345ab4 UPDATING: Add note about DMAR
DMAR crashes my laptop on boot, I had to disable it in the boot
laoder. Add a note until this is handled more gracefully.

Sponsored by:		Netflix
2024-08-14 09:00:37 -06:00
Wolfram Schneider c9e8a2cdba ports(7): searchable index of all ports is at ports.freebsd.org
PR: 280816
2024-08-14 14:53:38 +00:00
Kristof Provost 89f6723288 pf: invert direction for inner icmp state lookups
(e.g. traceroute with icmp)
ok henning, jsing

Also extend the test case to cover this scenario.

PR:		280701
Obtained from:	OpenBSD
MFC after:	1 week
Sponsored by:	Rubicon Communications, LLC ("Netgate")
2024-08-14 14:15:07 +02:00
Rob Norris 2633075e09 Linux 6.11: avoid passing "end" sentinel to register_sysctl()
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <robn@despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #16400
2024-08-13 17:47:22 -07:00
Rob Norris 3abffc8781 Linux 6.11: add compat macro for page_mapping()
Since the change to folios it has just been a wrapper anyway. Linux has
removed their wrapper, so we add one.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <robn@despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #16400
2024-08-13 17:47:18 -07:00
Rob Norris f5236fe47a Linux 6.11: add more queue_limit fields with removed setters
These fields are very old, so no detection necessary; we just move them
into the limit setup functions.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <robn@despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #16400
2024-08-13 17:47:13 -07:00
Rob Norris 0b741a0351 Linux 6.11: IO stats is now a queue feature flag
Apply them with with the rest of the settings.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <robn@despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #16400
2024-08-13 17:47:08 -07:00
Rob Norris 22619523f6 Linux 6.11: first arg to proc_handler is now const
Detect it, and use a macro to make sure we always match the prototype.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <robn@despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #16400
2024-08-13 17:47:01 -07:00
Rob Norris 7e98d30f46 Linux 6.11: get backing_dev_info through queue gendisk
It's no longer available directly on the request queue, but its easy to
get from the attached disk.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <robn@despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #16400
2024-08-13 17:46:49 -07:00
Rob Norris e95b732e49 Linux 6.11: enable queue flush through queue limits
In 6.11 struct queue_limits gains a 'features' field, where, among other
things, flush and write-cache are enabled. Detect it and use it.

Along the way, the blk_queue_set_write_cache() compat wrapper gets a
little cleanup. Since both flags are alway set together, its now a
single bool. Also the very very ancient version that sets q->flush_flags
directly couldn't actually turn it off, so I've fixed that. Not that we
use it, but still.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <robn@despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #16400
2024-08-13 17:46:41 -07:00
Rob Norris 767b37019f linux/zvol_os: tidy and document queue limit/config setup
It gets hairier again in Linux 6.11, so I want some actual theory of
operation laid out for next time.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <robn@despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #16400
2024-08-13 17:45:12 -07:00
Warner Losh 8c44df321c nvme: Add a clarifying comment
While it is easy enough to bounce over to nvme.c from nvme_ctrlr.c to
find this out, I've had to do that several times, so a little bit of
context is quite helpful.

Sponsored by:		Netflix
2024-08-13 16:46:41 -06:00
Warner Losh d40fc35f93 nvme: Make is_initialized a bool
is_initialized is used as a bool everywhere, and we never do any atomics
with it, so make it really a bool.

Sponsored by:		Netflix
2024-08-13 16:46:41 -06:00
Ed Maste 3192fc3023 x86: Enable Intel DMAR by default
APIC ID 255 and above require x2APIC and DMAR interrupt remapping.
FreeBSD is starting to be tested on high core count Intel systems that
meet this criteria.

Reviewed by:	kib, jhb
Sponsored by:	The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D42435
2024-08-13 16:02:45 -04:00
Ed Maste 2777a32588 iommu: disable dma by default
APIC ID 255 and above require x2APIC and DMAR interrupt remapping.
FreeBSD is starting to be tested on high core count Intel systems that
meet this criteria.  We're going to enable DMAR by default to support
this, so default hw.iommu.dma to 0 to avoid a significant performance
regression.

Reviewed by:	kib, jhb
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D42435
2024-08-13 16:00:47 -04:00
SHENG-YI HONG d3b05d0ea1 Add smbus and i2c device IDs for Meteor Lake
Reviewed by:	emaste, Daniel Schaefer <dhs@frame.work>
MFC after:	3 days
Sponsored by:	Framework Computer Inc
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D46249
2024-08-13 20:52:19 +08:00
Igor Ostapenko d1deb682f2 pf tests: Make if_enc.sh stick to utils.subr interface
Reviewed by:	kp
Differential Revision:	https://reviews.freebsd.org/D46280
2024-08-13 14:14:08 +02:00
Kristof Provost 34063cb714 pf tests: ensure that traceroutes using ICMP work
PR:		280701
MFC after:	1 week
Sponsored by:	Rubicon Communications, LLC ("Netgate")
2024-08-13 13:24:17 +02:00
Kristof Provost 2da98eef1f pf: fix icmp-in-icmp state lookup
In 534ee17e6 pf state checking for ICMP(v6) was made stricter. This change
failed to correctly set the pf_pdesc for ICMP-in-ICMP lookups, resulting in ICMP
error packets potentially being dropped incorrectly.
Specially, it copied the ICMP header into a separate variable, not into the
pf_pdesc.

Populate the required pf_pdesc fields for the embedded ICMP packet's state lookup.

PR:		280701
MFC after:	1 week
Sponsored by:	Rubicon Communications, LLC ("Netgate")
2024-08-13 13:23:17 +02:00
Kristof Provost 82e021443a pf: cope with SCTP port re-use
Some SCTP implementations will abort connections and then later re-use the same
port numbers (i.e. both src and dst) for a new connection, before pf has fully
purged the old connection.

Apply the same hack we already have for similarly misbehaving TCP
implementations and forcibly remove the old state so we can create a new one.

MFC after:	2 weeks
Sponsored by:	Rubicon Communications, LLC ("Netgate")
2024-08-13 13:16:12 +02:00
Kyle Evans 6df36deb8b boot: update lua linter for recent module additions
For modules we expect to be there, we need to --globals them in to avoid
linter errors.  Maybe we should switch to a different model for these
to clean up our linter exceptions... 'meh'.

Reported by:	David Cross <david_crossfamilyweb_com>
2024-08-12 20:57:14 -05:00
Mark Johnston 8805377dad dtraceall: Make dtaudit a dependency
Reported by:	tsoome
Reviewed by:	tsoome
Sponsored by:	Klara, Inc.
Differential Revision:	https://reviews.freebsd.org/D46274
2024-08-12 23:06:45 +00:00
Mark Johnston 27211b7998 mlx5: Remove a less than helpful debug print
Reviewed by:	khng
Fixes:	e23731db48 ("mlx5en: add IPSEC_OFFLOAD support")
Differential Revision:	https://reviews.freebsd.org/D46273
2024-08-12 23:06:01 +00:00
Mark Johnston fc4365853f socket: Fix handling of listening sockets in sotoxsocket()
A lock needs to be held to ensure that the socket does not become a
listening socket while sotoxsocket() is loading fields from the socket
buffers, as the memory backing the socket buffers is repurposed when
transitioning to a listening socket.

MFC after:	1 week
Sponsored by:	Klara, Inc.
Sponsored by:	Stormshield
2024-08-12 22:53:26 +00:00
Mark Johnston 07f2ed5ce8 socket: Make the sopt_rights field a pointer to const
No functional change intended.

MFC after:	1 week
Sponsored by:	Klara, Inc.
Sponsored by:	Stormshield
2024-08-12 22:53:26 +00:00
Mark Johnston 0a8e5aaa97 socket: Add macros to assert that the caller holds a socket I/O lock
Remove some unused macros while here.  No functional change intended.

MFC after:	1 week
Sponsored by:	Klara, Inc.
Sponsored by:	Stormshield
2024-08-12 22:53:26 +00:00
Jamie Gritton 5cf7054917 jail: only chdir to user's home directory when user is specified
jail(8) with the "exec.clean" parameter not only cleans the enviromnent
variables before running commands, but also changes to the user's home
directory.  While this makes sense when auser is specified (via one of
the exec.*_user parameters), it leads to all commands being run in the
jail's /root directory even in the absence of an explicitly specified
user.  This can lead to problems when e.g. rc scripts are run from that
non-world-readable directory, and run counter to expectations that jail
startup is analogous to system startup.

Restrict this behvaiour to only users exlicitly specified, either via
the command line or jail parameters, but not the implicit root user.
While this changes long-stand practice, it's the more intuitive action.

jexec(8) has the same problem, and the same fix.

PR:		277210
Reported by:	johannes.kunde at gmail
Differential Revision:	https://reviews.freebsd.org/D46226
2024-08-12 15:23:28 -07:00
Jessica Clarke 97c31cc800 kldxref: Clarify ambiguous comment
This previously read, to me at least, as if the not only applied to
ending with ".ko", not to the entire rest of the sentence, and thus the
implementation looked wrong. The history of D43507 however shows that
the behaviour is as intended.
2024-08-12 22:53:13 +01:00
Doug Moore b70247df0b axgbe: use bit_foreach
bitstring.h includes a definition of bit_foreach, for iterating over
the set bits of a bitstring. axgbe implements its own version of this
for bitstrings. Drop it, and use the bitstring method.

Reviewed by:	des
Differential Revision:	https://reviews.freebsd.org/D46037
2024-08-12 16:04:32 -05:00
Wolfram Schneider ccb0365643 stale symlinks: configurable obj dir prefix
Use $MAKEOBJDIRPREFIX if set, otherwise /usr/obj
2024-08-12 19:34:43 +00:00
Dimitry Andric f5ce3f4ef5 Fix EFI loader reproducibility with lld
When the various loaders under stand/efi are built, the resulting
binaries differ over multiple runs, even if WITH_REPRODUCIBLE_BUILD is
used. This is caused by lld multithreading and the custom linker scripts
for the loaders, and affects the following binaries:

* loader_4th.efi
* loader_4th.sym
* loader_4th.sym.full
* loader_lua.efi
* loader_lua.sym
* loader_lua.sym.full
* loader_simp.efi
* loader_simp.sym
* loader_simp.sym.full

Work around this by disabling lld threading for these binaries.

Reviewed by:	emaste
MFC after:	3 days
Differential Revision: https://reviews.freebsd.org/D46271
2024-08-12 15:31:02 +02:00
Li-Wen Hsu 6ea4d95f6c Move support of Realtek 8156/8156B from cdce(4) to ure(4)
Reviewed by:	kevlo, imp, hrs
MFC after:	3 days
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D45088
2024-08-12 14:56:28 +08:00
Fernando Apesteguía 5ab6ed93cd faccessat(2): Honor AT_SYMLINK_NOFOLLOW
Make the system call honor `AT_SYMLINK_NOFOLLOW`.

Also enable this from `linux_faccessat2` where the issue arised the first time.
Update manual pages accordingly.

PR:			275295
Reported by:		kenrap@kennethraplee.com
Approved by:		kib@
Differential Revision:	https://reviews.freebsd.org/D46267
2024-08-11 17:49:06 +02:00
Dimitry Andric 7a8d05ba19 Merge commit d2353ae00c3b from llvm git (by Argyrios Kyrtzidis):
[utils/TableGen/X86CompressEVEXTablesEmitter.cpp] Make sure the tablegen output for the `checkPredicate` function is deterministic (#84533)

  The output for the `checkPredicate` function was depending on a
  `std::map` iteration that was non-deterministic from run to run, because
  the keys were pointer values.

  Make a change so that the keys are `StringRef`s so the ordering is
  stable.

This avoids non-determinism in llvm-tblgen output, which could cause
differences in the generated X86GenCompressEVEXTables.inc file. Although
these differences are not influencing the meaning of the generated code,
they still change a few bytes in libllvm. This in turn influences all
the binaries linked with libllvm, such as clang, ld.lld, etc.

Reported by:	cperciva
MFC after:	3 days
2024-08-10 23:03:27 +02:00
Mark Johnston aea9dba46b turnstile: Mention the lock name when panicking due to a sleeping thread
This will hopefully make it a bit easier to track down the cause of such
panics.

MFC after:	2 weeks
2024-08-10 15:42:35 +00:00