mirror-linux/Documentation
Puranjay Mohan 1a5c01d250 bpf: Make KF_TRUSTED_ARGS the default for all kfuncs
Change the verifier to make trusted args the default requirement for
all kfuncs by removing is_kfunc_trusted_args() assuming it be to always
return true.

This works because:
1. Context pointers (xdp_md, __sk_buff, etc.) are handled through their
   own KF_ARG_PTR_TO_CTX case label and bypass the trusted check
2. Struct_ops callback arguments are already marked as PTR_TRUSTED during
   initialization and pass is_trusted_reg()
3. KF_RCU kfuncs are handled separately via is_kfunc_rcu() checks at
   call sites (always checked with || alongside is_kfunc_trusted_args)

This simple change makes all kfuncs require trusted args by default
while maintaining correct behavior for all existing special cases.

Note: This change means kfuncs that previously accepted NULL pointers
without KF_TRUSTED_ARGS will now reject NULL at verification time.
Several netfilter kfuncs are affected: bpf_xdp_ct_lookup(),
bpf_skb_ct_lookup(), bpf_xdp_ct_alloc(), and bpf_skb_ct_alloc() all
accept NULL for their bpf_tuple and opts parameters internally (checked
in __bpf_nf_ct_lookup), but after this change the verifier rejects NULL
before the kfunc is even called. This is acceptable because these kfuncs
don't work with NULL parameters in their proper usage. Now they will be
rejected rather than returning an error, which shouldn't make a
difference to BPF programs that were using these kfuncs properly.

Acked-by: Eduard Zingerman <eddyz87@gmail.com>
Reviewed-by: Emil Tsalapatis <emil@etsalapatis.com>
Signed-off-by: Puranjay Mohan <puranjay@kernel.org>
Link: https://lore.kernel.org/r/20260102180038.2708325-2-puranjay@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2026-01-02 12:04:28 -08:00
..
ABI RTC for 6.19 2025-12-13 17:09:06 +12:00
PCI Documentation: PCI: Amend error recovery doc with pci_save_state() rules 2025-11-24 16:59:10 -06:00
RCU
accel
accounting
admin-guide small dm code refactoring 2025-12-11 12:13:29 +09:00
arch Miscellaneous documentation fixes. 2025-12-06 12:33:26 -08:00
block
bpf bpf: Make KF_TRUSTED_ARGS the default for all kfuncs 2026-01-02 12:04:28 -08:00
cdrom
core-api Significant patch series in this pull request: 2025-12-06 14:01:20 -08:00
cpu-freq
crypto This update includes the following changes: 2025-12-03 11:28:38 -08:00
dev-tools There are no significant series in this small merge. Please see the 2025-12-13 20:55:12 +12:00
devicetree RTC for 6.19 2025-12-13 17:09:06 +12:00
doc-guide
driver-api platform-drivers-x86 for v6.19-1 2025-12-10 06:38:17 +09:00
edac
fault-injection
fb
features Apart from the usual small churn, we have 2025-12-05 16:30:56 -08:00
filesystems f2fs-for-6.19-rc1 2025-12-09 12:06:20 +09:00
firmware-guide
firmware_class
fpga
gpu Extra drm-misc-next for v6.19-rc1: 2025-12-02 18:09:08 +10:00
hid
hwmon docs: hwmon: fix link to g762 devicetree binding 2025-12-07 14:10:18 -08:00
i2c
iio
images
infiniband
input
isdn
kbuild
kernel-hacking
leds
litmus-tests
livepatch
locking
maintainer
mhi
misc-devices
mm Significant patch series in this pull request: 2025-12-06 14:01:20 -08:00
netlabel
netlink Networking changes for 6.19. 2025-12-03 17:24:33 -08:00
networking Documentation: net: dsa: mention simple HSR offload helpers 2025-12-01 16:51:55 -08:00
nvdimm
nvme
pcmcia
peci
power More power management updates for 6.19-rc1 2025-12-10 06:29:40 +09:00
process lib/Kconfig.debug: Set the minimum required pahole version to v1.22 2025-12-19 10:55:40 -08:00
rust
scheduler lib/Kconfig.debug: Set the minimum required pahole version to v1.22 2025-12-19 10:55:40 -08:00
scsi
security Landlock update for v6.19-rc1 2025-12-06 09:52:41 -08:00
sound
sphinx Documentation/sphinx/kernel_feat.py: use class directly 2025-11-21 10:32:30 -07:00
sphinx-static
spi
staging
sunrpc/xdr
target
tee
timers
tools rtla updaets for v6.19: 2025-12-05 09:34:01 -08:00
trace tracing updates for v6.19: 2025-12-05 09:51:37 -08:00
translations irqdomain: Delete irq_domain_add_tree() 2025-12-10 11:16:50 +09:00
usb
userspace-api Significant patch series in this pull request: 2025-12-06 14:01:20 -08:00
virt hyperv-next for v6.19 2025-12-09 06:10:17 +09:00
w1
watchdog
wmi Merge branch 'fixes' of into for-next 2025-12-01 11:53:59 +02:00
.gitignore
.renames.txt
Changes
CodingStyle
Kconfig
Makefile docs: makefile: move rustdoc check to the build wrapper 2025-11-29 08:42:53 -07:00
SubmittingPatches
atomic_bitops.txt
atomic_t.txt
conf.py
docutils.conf
index.rst
memory-barriers.txt
subsystem-apis.rst