mirror-linux/Documentation
Puranjay Mohan a069190b59 bpf: Replace __opt annotation with __nullable for kfuncs
The __opt annotation was originally introduced specifically for
buffer/size argument pairs in bpf_dynptr_slice() and
bpf_dynptr_slice_rdwr(), allowing the buffer pointer to be NULL while
still validating the size as a constant.  The __nullable annotation
serves the same purpose but is more general and is already used
throughout the BPF subsystem for raw tracepoints, struct_ops, and other
kfuncs.

This patch unifies the two annotations by replacing __opt with
__nullable.  The key change is in the verifier's
get_kfunc_ptr_arg_type() function, where mem/size pair detection is now
performed before the nullable check.  This ensures that buffer/size
pairs are correctly classified as KF_ARG_PTR_TO_MEM_SIZE even when the
buffer is nullable, while adding an !arg_mem_size condition to the
nullable check prevents interference with mem/size pair handling.

When processing KF_ARG_PTR_TO_MEM_SIZE arguments, the verifier now uses
is_kfunc_arg_nullable() instead of the removed is_kfunc_arg_optional()
to determine whether to skip size validation for NULL buffers.

This is the first documentation added for the __nullable annotation,
which has been in use since it was introduced but was previously
undocumented.

No functional changes to verifier behavior - nullable buffer/size pairs
continue to work exactly as before.

Acked-by: Eduard Zingerman <eddyz87@gmail.com>
Signed-off-by: Puranjay Mohan <puranjay@kernel.org>
Link: https://lore.kernel.org/r/20260102221513.1961781-1-puranjay@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2026-01-02 15:51:34 -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: Replace __opt annotation with __nullable for kfuncs 2026-01-02 15:51:34 -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