linux-kernelorg-stable/include/uapi/linux
Mathieu Desnoyers 3b68df9781 rseq: slice ext: Ensure rseq feature size differs from original rseq size
Before rseq became extensible, its original size was 32 bytes even
though the active rseq area was only 20 bytes. This had the following
impact in terms of userspace ecosystem evolution:

* The GNU libc between 2.35 and 2.39 expose a __rseq_size symbol set
  to 32, even though the size of the active rseq area is really 20.
* The GNU libc 2.40 changes this __rseq_size to 20, thus making it
  express the active rseq area.
* Starting from glibc 2.41, __rseq_size corresponds to the
  AT_RSEQ_FEATURE_SIZE from getauxval(3).

This means that users of __rseq_size can always expect it to
correspond to the active rseq area, except for the value 32, for
which the active rseq area is 20 bytes.

Exposing a 32 bytes feature size would make life needlessly painful
for userspace. Therefore, add a reserved field at the end of the
rseq area to bump the feature size to 33 bytes. This reserved field
is expected to be replaced with whatever field will come next,
expecting that this field will be larger than 1 byte.

The effect of this change is to increase the size from 32 to 64 bytes
before we actually have fields using that memory.

Clarify the allocation size and alignment requirements in the struct
rseq uapi comment.

Change the value returned by getauxval(AT_RSEQ_ALIGN) to return the
value of the active rseq area size rounded up to next power of 2, which
guarantees that the rseq structure will always be aligned on the nearest
power of two large enough to contain it, even as it grows. Change the
alignment check in the rseq registration accordingly.

This will minimize the amount of ABI corner-cases we need to document
and require userspace to play games with. The rule stays simple when
__rseq_size != 32:

  #define rseq_field_available(field)	(__rseq_size >= offsetofend(struct rseq_abi, field))

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://patch.msgid.link/20260220200642.1317826-3-mathieu.desnoyers@efficios.com
2026-02-23 11:19:19 +01:00
..
android binder: fix trivial typo in uapi header 2025-12-29 11:58:52 +01:00
byteorder
caif
can
cifs
counter
dvb
genwqe
hdlc
hsi
iio
io_uring io_uring/bpf_filter: pass in expected filter payload size 2026-02-16 15:56:31 -07:00
isdn
media media: uapi: mali-c55-config: Remove version identifier 2026-01-06 10:14:13 +01:00
misc
mmc
netfilter
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
aspeed-video.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
bits.h
blk-crypto.h
blkdev.h
blkpg.h
blktrace_api.h
blkzoned.h block: make the new blkzoned UAPI constants discoverable 2026-01-21 07:47:44 -07:00
bpf.h bpf: add new BPF_CGROUP_ITER_CHILDREN control option 2026-01-27 09:05:54 -08:00
bpf_common.h
bpf_perf_event.h
bpqether.h
bsg.h
bt-bmc.h
btf.h
btrfs.h btrfs: add definitions and constants for remap-tree 2026-02-03 07:54:02 +01:00
btrfs_tree.h btrfs: allow mounting filesystems with remap-tree incompat flag 2026-02-03 07:54:35 +01:00
cachefiles.h
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
cn_proc.h
coda.h
coff.h
comedi.h comedi: Fix getting range information for subdevices 16 to 255 2026-01-16 16:42:15 +01:00
connector.h
const.h
coredump.h
coresight-stm.h
counter.h
cramfs_fs.h
cryptouser.h
cuda.h
cxl_mem.h
cyclades.h
cycx_cfm.h
dcbnl.h
dccp.h
dev_energymodel.h PM: EM: Add dump to get-perf-domains in the EM YNL spec 2026-01-09 21:44:46 +01:00
devlink.h
dlm.h
dlm_device.h
dlm_plock.h
dlmconstants.h
dm-ioctl.h
dm-log-userspace.h
dma-buf.h
dma-heap.h
dns_resolver.h
dpll.h dpll: expose fractional frequency offset in ppt 2026-01-29 18:21:16 -08:00
dqblk_xfs.h
dw100.h
edd.h
efs_fs_sb.h
elf-em.h
elf-fdpic.h
elf.h riscv/ptrace: expose riscv CFI status and state via ptrace and in core files 2026-01-29 02:38:40 -07:00
errno.h
errqueue.h
erspan.h
ethtool.h net: ethtool: Add support for 80Gbps speed 2026-01-19 12:09:58 -08:00
ethtool_netlink.h
ethtool_netlink_generated.h
eventfd.h
eventpoll.h
exfat.h
ext4.h ext4: fix ext4_tune_sb_params padding 2026-01-18 11:22:53 -05:00
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 fs: add FS_XFLAG_VERITY for fs-verity files 2026-01-29 16:00:57 +01:00
fscrypt.h
fsi.h
fsl_hypervisor.h
fsl_mc.h
fsmap.h
fsverity.h
fuse.h
futex.h
gameport.h
gen_stats.h
genetlink.h
gfs2_ondisk.h
gpib.h
gpib_ioctl.h
gpio.h
gsmmux.h
gtp.h
handshake.h
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 hyper-v: Mark inner union in hv_kvp_exchg_msg_value as packed 2026-01-16 15:00:54 -07:00
i2c-dev.h
i2c.h
i2o-dev.h
i8k.h
icmp.h
icmpv6.h
idxd.h dmaengine: idxd: uapi: use UAPI types 2025-12-23 12:29:14 +05:30
if.h
if_addr.h
if_addrlabel.h
if_alg.h crypto: af_alg - Annotate struct af_alg_iv with __counted_by 2026-01-14 14:43:18 -08:00
if_arcnet.h
if_arp.h
if_bonding.h
if_bridge.h
if_eql.h
if_ether.h
if_fc.h
if_fddi.h
if_hippi.h
if_infiniband.h
if_link.h geneve: add netlink support for GRO hint 2026-01-23 11:31:14 -08: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
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 Input: add ABS_SND_PROFILE 2025-12-18 21:34:42 -08:00
input.h
io_uring.h io_uring-7.0-20260216 2026-02-17 08:33:49 -08:00
ioam6.h
ioam6_genl.h
ioam6_iptunnel.h
ioctl.h
iommufd.h iommufd: Introduce data struct for AMD nested domain allocation 2026-01-18 10:56:12 +01:00
ioprio.h
ip.h
ip6_tunnel.h
ip_vs.h
ipc.h
ipmi.h
ipmi_bmc.h
ipmi_msgdefs.h
ipmi_ssif_bmc.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
keyboard.h
keyctl.h
kfd_ioctl.h drm/amdkfd: add extended capabilities to device snapshot 2026-01-27 18:13:28 -05:00
kfd_sysfs.h drm/amdkfd: allow debug subscription to lds violations on gfx 1250 2025-12-16 13:23:17 -05:00
kvm.h - gmap rewrite: completely new memory management for kvm/s390 2026-02-11 18:52:27 +01:00
kvm_para.h
l2tp.h
landlock.h landlock: Minor reword of docs for TCP access rights 2026-02-06 17:54:40 +01:00
libc-compat.h
limits.h
lirc.h
liveupdate.h
llc.h
loadpin.h
lockd_netlink.h
loop.h
lp.h
lsm.h
lwtunnel.h
magic.h fs: add immutable rootfs 2026-01-12 16:52:09 +01:00
major.h
map_benchmark.h
map_to_7segment.h
map_to_14segment.h
matroxfb.h
max2175.h
mctp.h
mdio.h
media-bus-format.h
media.h
mei.h
mei_uuid.h
membarrier.h
memfd.h
mempolicy.h mm/mempolicy: fix mpol_rebind_nodemask() for MPOL_F_NUMA_BALANCING 2026-01-26 20:02:32 -08:00
mii.h
minix_fs.h
mman.h
mmtimer.h
module.h
mount.h mount: add OPEN_TREE_NAMESPACE 2026-01-16 19:21:40 +01:00
mpls.h
mpls_iptunnel.h
mptcp.h mptcp: pm: ignore unknown endpoint flags 2025-12-08 23:54:02 -08:00
mptcp_pm.h mptcp: fix kdoc warnings 2026-02-06 20:35:06 -08:00
mqueue.h
mroute.h
mroute6.h
mrp_bridge.h
msdos_fs.h
msg.h
mshv.h mshv: Add SMT_ENABLED_GUEST partition creation flag 2026-02-18 23:54:37 +00:00
mtio.h
nbd-netlink.h
nbd.h
ncsi.h
ndctl.h
neighbour.h
net.h
net_dropmon.h
net_namespace.h
net_shaper.h
net_tstamp.h
netconf.h
netdev.h Revert "Merge branch 'netkit-support-for-io_uring-zero-copy-and-af_xdp'" 2026-01-20 18:06:01 -08:00
netdevice.h
netfilter.h
netfilter_arp.h
netfilter_bridge.h include: uapi: netfilter_bridge.h: Cover for musl libc 2026-02-17 15:04:20 +01:00
netfilter_ipv4.h netfilter: uapi: Use UAPI definition of INT_MAX and INT_MIN 2026-01-17 15:24:05 -08:00
netfilter_ipv6.h netfilter: uapi: Use UAPI definition of INT_MAX and INT_MIN 2026-01-17 15:24:05 -08:00
netlink.h
netlink_diag.h
netrom.h
nexthop.h
nfc.h
nfs.h NFS: NFSERR_INVAL is not defined by NFSv2 2026-01-26 10:10:58 -05:00
nfs2.h
nfs3.h
nfs4.h
nfs4_mount.h
nfs_fs.h
nfs_idmap.h
nfs_mount.h
nfsacl.h
nfsd_netlink.h nfsd: add controls to set the minimum number of threads per pool 2026-01-28 10:15:42 -05:00
nilfs2_api.h nilfs2: fix missing struct keywords in nilfs2_api.h kernel-doc 2025-12-22 15:45:29 -08:00
nilfs2_ondisk.h nilfs2: convert nilfs_super_block to kernel-doc 2025-12-22 15:45:29 -08:00
nitro_enclaves.h
nl80211-vnd-intel.h
nl80211.h wifi: cfg80211: add initial UHR support 2026-02-02 10:11:07 +01:00
npcm-video.h
nsfs.h
nsm.h
ntsync.h
nubus.h
nvme_ioctl.h
nvram.h
omap3isp.h
omapfb.h
oom.h
openat2.h
openvswitch.h
ovpn.h
packet_diag.h
papr_pdsm.h
param.h
parport.h
patchkey.h
pci.h PCI: trace: Add generic RAS tracepoint for hotplug event 2025-12-23 16:05:56 -06:00
pci_regs.h cxl changes for v7.0 2026-02-12 16:33:05 -08:00
pcitest.h misc: pci_endpoint_test: Add BAR subrange mapping test case 2026-01-29 17:42:29 -06:00
perf_event.h Performance events changes for v7.0: 2026-02-10 12:00:46 -08:00
personality.h
pfkeyv2.h
pfrut.h
pg.h
phantom.h
phonet.h
pidfd.h
pkt_cls.h
pkt_sched.h net/sched: sch_cake: share shaper state across sub-instances of cake_mq 2026-01-13 11:54:29 +01:00
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
pps_gen.h
pr.h block: add allocation size check in blkdev_pr_read_keys() 2025-12-17 07:35:22 -07:00
prctl.h RISC-V updates for v7.0 2026-02-12 19:17:44 -08:00
psample.h
psci.h
psp-dbc.h
psp-sev.h
psp-sfs.h
psp.h
ptp_clock.h
ptrace.h
pwm.h
qemu_fw_cfg.h
qnx4_fs.h
qnxtypes.h
qrtr.h
quota.h
radeonfb.h
random.h
rds.h
reboot.h
remoteproc_cdev.h
resource.h
rfkill.h
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_types.h
rseq.h rseq: slice ext: Ensure rseq feature size differs from original rseq size 2026-02-23 11:19:19 +01:00
rtc.h
rtnetlink.h
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_reg.h
serio.h
sev-guest.h
shm.h ipc/shm: uapi: remove dependency on libc 2026-01-26 19:07:10 -08:00
signal.h
signalfd.h
smc.h
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 compiler_types.h: Attributes: Add __counted_by_ptr macro 2026-01-17 11:00:28 -08:00
stm.h
string.h
suspend_ioctls.h
swab.h
switchtec_ioctl.h
sync_file.h
synclink.h
sysctl.h mm.git review status for linus..mm-stable 2026-02-12 11:32:37 -08:00
sysinfo.h
target_core_user.h
taskstats.h delayacct: fix uapi timespec64 definition 2026-02-08 00:13:32 -08:00
tcp.h tcp: accecn: add tcpi_ecn_mode and tcpi_option2 in tcp_info 2026-02-03 15:13:25 +01:00
tcp_metrics.h
tdx-guest.h
tee.h
termios.h
thermal.h
thp7312.h
time.h
time_types.h
timerfd.h
times.h
timex.h
tiocl.h
tipc.h
tipc_config.h
tipc_netlink.h
tipc_sockets_diag.h
tls.h
toshiba.h
tps6594_pfsm.h
trace_mmap.h
tty.h
tty_flags.h
typelimits.h uapi: add INT_MAX and INT_MIN constants 2026-01-17 15:24:05 -08:00
types.h
ublk_cmd.h ublk: add UBLK_F_NO_AUTO_PART_SCAN feature flag 2026-01-31 06:36:41 -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
user_events.h
userfaultfd.h
userio.h
utime.h
utsname.h
uuid.h
uvcvideo.h
v4l2-common.h
v4l2-controls.h media: v4l2-ctrls: Add hevc_ext_sps_[ls]t_rps controls 2026-01-21 14:43:09 +01:00
v4l2-dv-timings.h
v4l2-mediabus.h
v4l2-subdev.h
vbox_err.h
vbox_vmmdev_types.h virt: vbox: uapi: Mark inner unions in packed structs as packed 2026-01-16 15:00:54 -07:00
vboxguest.h
vdpa.h
vduse.h vduse: avoid adding implicit padding 2026-02-09 12:21:32 -05:00
vesa.h
veth.h
vfio.h iommu: Introduce pci_dev_reset_iommu_prepare/done() 2026-01-10 10:26:44 +01:00
vfio_ccw.h
vfio_zdev.h
vhost.h
vhost_types.h
videodev2.h media: v4l2-ctrls: Add hevc_ext_sps_[ls]t_rps controls 2026-01-21 14:43:09 +01:00
virtio_9p.h
virtio_balloon.h
virtio_blk.h
virtio_bt.h
virtio_config.h
virtio_console.h
virtio_crypto.h
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: uapi: avoid usage of libc types 2025-12-26 15:00:00 -05:00
virtio_rng.h
virtio_rtc.h
virtio_scmi.h
virtio_scsi.h
virtio_snd.h
virtio_spi.h
virtio_types.h
virtio_vsock.h
vm_sockets.h
vm_sockets_diag.h
vmclock-abi.h ptp: vmclock: support device notifications 2026-02-02 18:06:00 -08:00
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 get rid of bogus __user in struct xattr_args::value 2025-12-24 13:52:50 +01:00
xdp_diag.h
xfrm.h
xilinx-v4l2-controls.h
zorro.h
zorro_ids.h