linux-xiaomi-chiron/include/uapi/linux
Kumar Kartikeya Dwivedi c0a5a21c25 bpf: Allow storing referenced kptr in map
Extending the code in previous commits, introduce referenced kptr
support, which needs to be tagged using 'kptr_ref' tag instead. Unlike
unreferenced kptr, referenced kptr have a lot more restrictions. In
addition to the type matching, only a newly introduced bpf_kptr_xchg
helper is allowed to modify the map value at that offset. This transfers
the referenced pointer being stored into the map, releasing the
references state for the program, and returning the old value and
creating new reference state for the returned pointer.

Similar to unreferenced pointer case, return value for this case will
also be PTR_TO_BTF_ID_OR_NULL. The reference for the returned pointer
must either be eventually released by calling the corresponding release
function, otherwise it must be transferred into another map.

It is also allowed to call bpf_kptr_xchg with a NULL pointer, to clear
the value, and obtain the old value if any.

BPF_LDX, BPF_STX, and BPF_ST cannot access referenced kptr. A future
commit will permit using BPF_LDX for such pointers, but attempt at
making it safe, since the lifetime of object won't be guaranteed.

There are valid reasons to enforce the restriction of permitting only
bpf_kptr_xchg to operate on referenced kptr. The pointer value must be
consistent in face of concurrent modification, and any prior values
contained in the map must also be released before a new one is moved
into the map. To ensure proper transfer of this ownership, bpf_kptr_xchg
returns the old value, which the verifier would require the user to
either free or move into another map, and releases the reference held
for the pointer being moved in.

In the future, direct BPF_XCHG instruction may also be permitted to work
like bpf_kptr_xchg helper.

Note that process_kptr_func doesn't have to call
check_helper_mem_access, since we already disallow rdonly/wronly flags
for map, which is what check_map_access_type checks, and we already
ensure the PTR_TO_MAP_VALUE refers to kptr by obtaining its off_desc,
so check_map_access is also not required.

Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20220424214901.2743946-4-memxor@gmail.com
2022-04-25 20:26:05 -07:00
..
android android/binder.h: add linux/android/binder(fs).h to UAPI compile-test coverage 2022-02-17 09:09:37 +01:00
byteorder
caif
can can: isotp: set default value for N_As to 50 micro seconds 2022-03-10 09:23:45 +01:00
cifs
dvb
genwqe
hdlc
hsi
iio iio: introduce mag_referenced 2022-02-21 19:33:05 +00:00
isdn
misc
mmc
netfilter Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2022-02-10 17:29:56 -08:00
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
nfsd
raid
sched
spi
sunrpc
surface_aggregator
tc_act
tc_ematch
usb
a.out.h
acct.h
acrn.h
adb.h
adfs_fs.h
affs_hardblocks.h
agpgart.h
aio_abi.h
am437x-vpfe.h
amt.h
apm_bios.h
arcfb.h
arm_sdei.h
aspeed-lpc-ctrl.h
aspeed-p2a-ctrl.h
atalk.h
atm.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_tcp.h
atm_zatm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
audit.h
auto_dev-ioctl.h
auto_fs.h
auto_fs4.h
auxvec.h
ax25.h
batadv_packet.h
batman_adv.h
baycom.h
bcm933xx_hcs.h
bfs_fs.h
binfmts.h
blkpg.h
blktrace_api.h
blkzoned.h
bpf.h bpf: Allow storing referenced kptr in map 2022-04-25 20:26:05 -07:00
bpf_common.h
bpf_perf_event.h
bpfilter.h
bpqether.h
bsg.h
bt-bmc.h
btf.h bpf: Correct the comment for BTF kind bitfield 2022-04-03 17:06:52 -07:00
btrfs.h btrfs: add definitions and documentation for encoded I/O ioctls 2022-03-14 13:13:51 +01:00
btrfs_tree.h btrfs: add code to support the block group root 2022-03-14 13:13:48 +01:00
can.h
capability.h
capi.h
cciss_defs.h
cciss_ioctl.h
ccs.h
cdrom.h
cec-funcs.h
cec.h
cfm_bridge.h
cgroupstats.h
chio.h
close_range.h
cm4000_cs.h
cn_proc.h
coda.h
coff.h
comedi.h
connector.h
const.h
coresight-stm.h
counter.h counter: add new COUNTER_EVENT_CHANGE_OF_STATE 2022-03-18 14:04:30 +01:00
cramfs_fs.h
cryptouser.h
cuda.h
cxl_mem.h
cyclades.h
cycx_cfm.h
dcbnl.h
dccp.h
devlink.h
dlm.h
dlm_device.h
dlm_netlink.h
dlm_plock.h
dlmconstants.h
dm-ioctl.h dm: add dm_submit_bio_remap interface 2022-02-21 15:36:33 -05:00
dm-log-userspace.h
dma-buf.h
dma-heap.h
dn.h
dns_resolver.h
dqblk_xfs.h
edd.h
efs_fs_sb.h
elf-em.h
elf-fdpic.h
elf.h execve updates for v5.18-rc1 2022-03-21 19:16:02 -07:00
errno.h
errqueue.h
erspan.h
ethtool.h
ethtool_netlink.h ethtool: add support to set/get completion queue event size 2022-02-23 20:33:05 -08:00
eventpoll.h
f2fs.h
fadvise.h
falloc.h
fanotify.h
fb.h
fcntl.h
fd.h
fdreg.h
fib_rules.h
fiemap.h
filter.h
firewire-cdev.h
firewire-constants.h
fou.h
fpga-dfl.h
fs.h
fscrypt.h
fsi.h fsi: sbefifo: Implement FSI_SBEFIFO_READ_TIMEOUT_SECONDS ioctl 2022-02-21 19:38:17 +10:30
fsl_hypervisor.h
fsl_mc.h
fsmap.h fsmap.h: add linux/fsmap.h to UAPI compile-test coverage 2022-02-17 09:09:37 +01:00
fsverity.h
fuse.h
futex.h
gameport.h
gen_stats.h
genetlink.h
gfs2_ondisk.h
gpio.h
gsmmux.h
gtp.h gtp: Implement GTP echo request 2022-03-11 08:28:05 -08:00
hash_info.h
hdlc.h
hdlcdrv.h
hdreg.h
hid.h
hiddev.h
hidraw.h
hpet.h
hsr_netlink.h
hw_breakpoint.h
hyperv.h hv_utils: Add comment about max VMbus packet size in VSS driver 2022-02-18 13:08:18 +00:00
i2c-dev.h
i2c.h
i2o-dev.h
i8k.h
icmp.h
icmpv6.h
idxd.h
if.h
if_addr.h net: Add new protocol attribute to IP addresses 2022-02-18 21:20:06 -08:00
if_addrlabel.h
if_alg.h
if_arcnet.h
if_arp.h
if_bonding.h
if_bridge.h net: bridge: mst: Support setting and reporting MST port states 2022-03-17 16:49:57 -07:00
if_cablemodem.h
if_eql.h
if_ether.h if_ether.h: add EtherCAT Ethertype 2022-03-01 18:29:27 -08:00
if_fc.h
if_fddi.h
if_hippi.h
if_infiniband.h
if_link.h net-core: rx_otherhost_dropped to core_stats 2022-04-07 20:32:49 -07:00
if_ltalk.h
if_macsec.h
if_packet.h
if_phonet.h
if_plip.h
if_ppp.h
if_pppol2tp.h
if_pppox.h
if_slip.h
if_team.h
if_tun.h
if_tunnel.h net/sched: Allow flower to match on GTP options 2022-03-11 08:28:27 -08:00
if_vlan.h
if_x25.h
if_xdp.h
ife.h
igmp.h
ila.h
in.h
in6.h
in_route.h
inet_diag.h
inotify.h
input-event-codes.h HID: add mapping for KEY_ALL_APPLICATIONS 2022-03-03 18:44:21 -08:00
input.h
io_uring.h io_uring: remove IORING_CQE_F_MSG 2022-03-24 06:53:18 -06:00
ioam6.h
ioam6_genl.h
ioam6_iptunnel.h
ioctl.h
iommu.h iommu: Remove guest pasid related interfaces and definitions 2022-02-28 13:25:48 +01:00
ioprio.h
ip.h
ip6_tunnel.h
ip_vs.h
ipc.h
ipmi.h
ipmi_bmc.h
ipmi_msgdefs.h
ipsec.h
ipv6.h
ipv6_route.h
irqnr.h
iso_fs.h
isst_if.h
ivtv.h
ivtvfb.h
jffs2.h
joystick.h
kcm.h
kcmp.h
kcov.h
kd.h
kdev_t.h
kernel-page-flags.h
kernel.h
kernelcapi.h
kexec.h kexec.h: add linux/kexec.h to UAPI compile-test coverage 2022-02-17 09:09:38 +01:00
keyboard.h
keyctl.h
kfd_ioctl.h drm/amdkfd: CRIU export dmabuf handles for GTT BOs 2022-03-15 14:25:17 -04:00
kfd_sysfs.h
kvm.h KVM: x86: Introduce KVM_CAP_DISABLE_QUIRKS2 2022-03-21 09:28:41 -04:00
kvm_para.h
l2tp.h
landlock.h
libc-compat.h
limits.h
lirc.h media: lirc: remove unused feature LIRC_CAN_SET_REC_DUTY_CYCLE 2022-03-07 16:29:07 +01:00
llc.h
loop.h loop: fix ioctl calls using compat_loop_info 2022-03-30 08:54:32 -06:00
lp.h
lwtunnel.h
magic.h fuse: move FUSE_SUPER_MAGIC definition to magic.h 2022-02-21 14:57:26 +01:00
major.h
map_to_7segment.h
map_to_14segment.h
matroxfb.h
max2175.h
mctp.h mctp: Add SIOCMCTP{ALLOC,DROP}TAG ioctls for tag control 2022-02-09 12:00:11 +00:00
mdio.h
media-bus-format.h
media.h
mei.h
membarrier.h
memfd.h
mempolicy.h
meye.h
mii.h
minix_fs.h
mman.h
mmtimer.h
module.h
mount.h
mpls.h
mpls_iptunnel.h
mptcp.h mptcp: introduce implicit endpoints 2022-03-08 22:06:11 -08:00
mqueue.h
mroute.h
mroute6.h net: ip6mr: add support for passing full packet on wrong mif 2022-02-19 16:05:54 +00:00
mrp_bridge.h
msdos_fs.h
msg.h
mtio.h
nbd-netlink.h
nbd.h
ncsi.h
ndctl.h nvdimm/region: Delete nd_blk_region infrastructure 2022-03-11 15:53:13 -08:00
neighbour.h
net.h
net_dropmon.h net: drop_monitor: support drop reason 2022-02-09 17:25:57 -08:00
net_namespace.h
net_tstamp.h
netconf.h
netdevice.h
netfilter.h
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netlink.h
netlink_diag.h
netrom.h
nexthop.h
nfc.h
nfs.h
nfs2.h
nfs3.h
nfs4.h NFSv4.1 support for NFS4_RESULT_PRESERVER_UNLINKED 2022-02-25 18:50:12 -05:00
nfs4_mount.h
nfs_fs.h NFS: Remove remaining dfprintks related to fscache and remove NFSDBG_FSCACHE 2022-03-13 12:59:35 -04:00
nfs_idmap.h
nfs_mount.h
nfsacl.h
nilfs2_api.h
nilfs2_ondisk.h
nitro_enclaves.h
nl80211-vnd-intel.h
nl80211.h nl80211: fix typo of NL80211_IF_TYPE_OCB in documentation 2022-03-11 11:43:55 +01:00
nsfs.h
nubus.h
nvme_ioctl.h nvme: add vectored-io support for user-passthrough 2022-02-28 13:45:06 +02:00
nvram.h
omap3isp.h media: omap3isp: Use struct_group() for memcpy() region 2022-02-27 10:58:04 -08:00
omapfb.h
oom.h
openat2.h
openvswitch.h net: openvswitch: fix uAPI incompatibility with existing user space 2022-03-10 20:14:52 -08:00
packet_diag.h
param.h
parport.h
patchkey.h
pci.h
pci_regs.h
pcitest.h
perf_event.h Changes for this cycle were: 2022-03-22 13:06:49 -07:00
personality.h
pfkeyv2.h
pfrut.h
pg.h
phantom.h
phonet.h
pidfd.h
pkt_cls.h net/sched: Allow flower to match on GTP options 2022-03-11 08:28:27 -08:00
pkt_sched.h
pktcdvd.h
pmu.h
poll.h
posix_acl.h
posix_acl_xattr.h
posix_types.h
ppdev.h
ppp-comp.h
ppp-ioctl.h
ppp_defs.h
pps.h
pr.h
prctl.h
psample.h
psci.h KVM: arm64: Expose PSCI SYSTEM_RESET2 call to the guest 2022-02-21 16:02:55 +00:00
psp-sev.h
ptp_clock.h
ptrace.h ptrace: Move setting/clearing ptrace_message into ptrace_stop 2022-03-18 09:44:19 -05:00
qemu_fw_cfg.h
qnx4_fs.h
qnxtypes.h
qrtr.h
quota.h
radeonfb.h
random.h
rds.h
reboot.h
reiserfs_fs.h
reiserfs_xattr.h reiserfs_xattr.h: add linux/reiserfs_xattr.h to UAPI compile-test coverage 2022-02-17 09:09:38 +01:00
remoteproc_cdev.h
resource.h
rfkill.h rfkill: make new event layout opt-in 2022-03-18 13:09:17 +02:00
rio_cm_cdev.h
rio_mport_cdev.h
rkisp1-config.h
romfs_fs.h
rose.h
route.h
rpl.h
rpl_iptunnel.h
rpmsg.h rpmsg: ctrl: Introduce new RPMSG_CREATE/RELEASE_DEV_IOCTL controls 2022-03-13 11:49:53 -05:00
rpmsg_types.h
rseq.h
rtc.h rtc: add new RTC_FEATURE_ALARM_WAKEUP_ONLY feature 2022-03-23 19:58:40 +01:00
rtnetlink.h net: bridge: mst: Support setting and reporting MST port states 2022-03-17 16:49:57 -07:00
rxrpc.h
scc.h
sched.h
scif_ioctl.h
screen_info.h
sctp.h
seccomp.h
securebits.h
sed-opal.h
seg6.h
seg6_genl.h
seg6_hmac.h
seg6_iptunnel.h
seg6_local.h
selinux_netlink.h
sem.h
serial.h
serial_core.h serial: sunplus-uart: Add Sunplus SoC UART Driver 2022-02-26 10:03:21 +01:00
serial_reg.h
serio.h
shm.h
signal.h
signalfd.h
smc.h net/smc: Add global configure for handshake limitation by netlink 2022-02-11 11:14:58 +00:00
smc_diag.h
smiapp.h
snmp.h
sock_diag.h
socket.h
sockios.h
sonet.h
sonypi.h
sound.h
soundcard.h
stat.h
stddef.h
stm.h
string.h
suspend_ioctls.h
swab.h
switchtec_ioctl.h
sync_file.h
synclink.h
sysctl.h
sysinfo.h
target_core_user.h
taskstats.h
tcp.h
tcp_metrics.h
tee.h
termios.h
thermal.h
time.h
time_types.h
timerfd.h
times.h
timex.h
tiocl.h
tipc.h
tipc_config.h net, uapi: remove inclusion of arpa/inet.h 2022-04-06 13:48:02 +01:00
tipc_netlink.h
tipc_sockets_diag.h
tls.h
toshiba.h
tty.h tty: Reserve ldisc 29 for development purposes 2022-02-26 10:03:21 +01:00
tty_flags.h
types.h Documentation/sparse: add hints about __CHECKER__ 2022-03-23 19:00:33 -07:00
udf_fs_i.h
udmabuf.h
udp.h
uhid.h
uinput.h
uio.h
uleds.h
ultrasound.h
um_timetravel.h
un.h
unistd.h
unix_diag.h
usbdevice_fs.h
usbip.h
userfaultfd.h userfaultfd: provide unmasked address on page-fault 2022-03-22 15:57:08 -07:00
userio.h
utime.h
utsname.h
uuid.h
uvcvideo.h
v4l2-common.h
v4l2-controls.h Even yet more V4L2 patches for 5.18 2022-03-07 16:43:14 +01:00
v4l2-dv-timings.h
v4l2-mediabus.h
v4l2-subdev.h
vbox_err.h
vbox_vmmdev_types.h
vboxguest.h
vdpa.h
vduse.h
veth.h
vfio.h vfio: Remove migration protocol v1 documentation 2022-03-03 13:01:19 +02:00
vfio_ccw.h
vfio_zdev.h
vhost.h vdpa: support exposing the count of vqs to userspace 2022-03-28 16:53:00 -04:00
vhost_types.h
videodev2.h media: add nv12m_8l128 and nv12m_10be_8l128 video format. 2022-03-07 17:13:31 +01:00
virtio_9p.h
virtio_balloon.h
virtio_blk.h
virtio_bt.h
virtio_config.h Add definition of VIRTIO_F_IN_ORDER feature bit 2022-03-28 16:52:58 -04:00
virtio_console.h
virtio_crypto.h virtio-crypto: introduce akcipher service 2022-03-28 16:52:58 -04:00
virtio_fs.h
virtio_gpio.h
virtio_gpu.h
virtio_i2c.h
virtio_ids.h
virtio_input.h
virtio_iommu.h
virtio_mem.h
virtio_mmio.h
virtio_net.h
virtio_pci.h
virtio_pcidev.h
virtio_pmem.h
virtio_ring.h
virtio_rng.h
virtio_scmi.h
virtio_scsi.h
virtio_snd.h
virtio_types.h
virtio_vsock.h
vm_sockets.h
vm_sockets_diag.h
vmcore.h
vsockmon.h
vt.h
vtpm_proxy.h
wait.h
watch_queue.h
watchdog.h
wireguard.h
wireless.h
wmi.h
wwan.h
x25.h
xattr.h
xdp_diag.h
xfrm.h xfrm: enforce validity of offload input flags 2022-02-09 09:00:40 +01:00
xilinx-v4l2-controls.h
zorro.h
zorro_ids.h