mirror_ubuntu-kernels/include/uapi/linux
Christian Brauner 22ed7ecdae
fs: add FSCONFIG_CMD_CREATE_EXCL
Summary
=======

This introduces FSCONFIG_CMD_CREATE_EXCL which will allows userspace to
implement something like mount -t ext4 --exclusive /dev/sda /B which
fails if a superblock for the requested filesystem does already exist:

Before this patch
-----------------

$ sudo ./move-mount -f xfs -o source=/dev/sda4 /A
Requesting filesystem type xfs
Mount options requested: source=/dev/sda4
Attaching mount at /A
Moving single attached mount
Setting key(source) with val(/dev/sda4)

$ sudo ./move-mount -f xfs -o source=/dev/sda4 /B
Requesting filesystem type xfs
Mount options requested: source=/dev/sda4
Attaching mount at /B
Moving single attached mount
Setting key(source) with val(/dev/sda4)

After this patch with --exclusive as a switch for FSCONFIG_CMD_CREATE_EXCL
--------------------------------------------------------------------------

$ sudo ./move-mount -f xfs --exclusive -o source=/dev/sda4 /A
Requesting filesystem type xfs
Request exclusive superblock creation
Mount options requested: source=/dev/sda4
Attaching mount at /A
Moving single attached mount
Setting key(source) with val(/dev/sda4)

$ sudo ./move-mount -f xfs --exclusive -o source=/dev/sda4 /B
Requesting filesystem type xfs
Request exclusive superblock creation
Mount options requested: source=/dev/sda4
Attaching mount at /B
Moving single attached mount
Setting key(source) with val(/dev/sda4)
Device or resource busy | move-mount.c: 300: do_fsconfig: i xfs: reusing existing filesystem not allowed

Details
=======

As mentioned on the list (cf. [1]-[3]) mount requests like
mount -t ext4 /dev/sda /A are ambigous for userspace. Either a new
superblock has been created and mounted or an existing superblock has
been reused and a bind-mount has been created.

This becomes clear in the following example where two processes create
the same mount for the same block device:

P1                                                              P2
fd_fs = fsopen("ext4");                                         fd_fs = fsopen("ext4");
fsconfig(fd_fs, FSCONFIG_SET_STRING, "source", "/dev/sda");     fsconfig(fd_fs, FSCONFIG_SET_STRING, "source", "/dev/sda");
fsconfig(fd_fs, FSCONFIG_SET_STRING, "dax", "always");          fsconfig(fd_fs, FSCONFIG_SET_STRING, "resuid", "1000");

// wins and creates superblock
fsconfig(fd_fs, FSCONFIG_CMD_CREATE, ...)
                                                                // finds compatible superblock of P1
                                                                // spins until P1 sets SB_BORN and grabs a reference
                                                                fsconfig(fd_fs, FSCONFIG_CMD_CREATE, ...)

fd_mnt1 = fsmount(fd_fs);                                       fd_mnt2 = fsmount(fd_fs);
move_mount(fd_mnt1, "/A")                                       move_mount(fd_mnt2, "/B")

Not just does P2 get a bind-mount but the mount options that P2
requestes are silently ignored. The VFS itself doesn't, can't and
shouldn't enforce filesystem specific mount option compatibility. It
only enforces incompatibility for read-only <-> read-write transitions:

mount -t ext4       /dev/sda /A
mount -t ext4 -o ro /dev/sda /B

The read-only request will fail with EBUSY as the VFS can't just
silently transition a superblock from read-write to read-only or vica
versa without risking security issues.

To userspace this silent superblock reuse can become a security issue in
because there is currently no straightforward way for userspace to know
that they did indeed manage to create a new superblock and didn't just
reuse an existing one.

This adds a new FSCONFIG_CMD_CREATE_EXCL command to fsconfig() that
returns EBUSY if an existing superblock would be reused. Userspace that
needs to be sure that it did create a new superblock with the requested
mount options can request superblock creation using this command. If the
command succeeds they can be sure that they did create a new superblock
with the requested mount options.

This requires the new mount api. With the old mount api it would be
necessary to plumb this through every legacy filesystem's
file_system_type->mount() method. If they want this feature they are
most welcome to switch to the new mount api.

Following is an analysis of the effect of FSCONFIG_CMD_CREATE_EXCL on
each high-level superblock creation helper:

(1) get_tree_nodev()

    Always allocate new superblock. Hence, FSCONFIG_CMD_CREATE and
    FSCONFIG_CMD_CREATE_EXCL are equivalent.

    The binderfs or overlayfs filesystems are examples.

(4) get_tree_keyed()

    Finds an existing superblock based on sb->s_fs_info. Hence,
    FSCONFIG_CMD_CREATE would reuse an existing superblock whereas
    FSCONFIG_CMD_CREATE_EXCL would reject it with EBUSY.

    The mqueue or nfsd filesystems are examples.

(2) get_tree_bdev()

    This effectively works like get_tree_keyed().

    The ext4 or xfs filesystems are examples.

(3) get_tree_single()

    Only one superblock of this filesystem type can ever exist.
    Hence, FSCONFIG_CMD_CREATE would reuse an existing superblock
    whereas FSCONFIG_CMD_CREATE_EXCL would reject it with EBUSY.

    The securityfs or configfs filesystems are examples.

    Note that some single-instance filesystems never destroy the
    superblock once it has been created during the first mount. For
    example, if securityfs has been mounted at least onces then the
    created superblock will never be destroyed again as long as there is
    still an LSM making use it. Consequently, even if securityfs is
    unmounted and the superblock seemingly destroyed it really isn't
    which means that FSCONFIG_CMD_CREATE_EXCL will continue rejecting
    reusing an existing superblock.

    This is acceptable thugh since special purpose filesystems such as
    this shouldn't have a need to use FSCONFIG_CMD_CREATE_EXCL anyway
    and if they do it's probably to make sure that mount options aren't
    ignored.

Following is an analysis of the effect of FSCONFIG_CMD_CREATE_EXCL on
filesystems that make use of the low-level sget_fc() helper directly.
They're all effectively variants on get_tree_keyed(), get_tree_bdev(),
or get_tree_nodev():

(5) mtd_get_sb()

    Similar logic to get_tree_keyed().

(6) afs_get_tree()

    Similar logic to get_tree_keyed().

(7) ceph_get_tree()

    Similar logic to get_tree_keyed().

    Already explicitly allows forcing the allocation of a new superblock
    via CEPH_OPT_NOSHARE. This turns it into get_tree_nodev().

(8) fuse_get_tree_submount()

    Similar logic to get_tree_nodev().

(9) fuse_get_tree()

    Forces reuse of existing FUSE superblock.

    Forces reuse of existing superblock if passed in file refers to an
    existing FUSE connection.
    If FSCONFIG_CMD_CREATE_EXCL is specified together with an fd
    referring to an existing FUSE connections this would cause the
    superblock reusal to fail. If reusing is the intent then
    FSCONFIG_CMD_CREATE_EXCL shouldn't be specified.

(10) fuse_get_tree()
     -> get_tree_nodev()

    Same logic as in get_tree_nodev().

(11) fuse_get_tree()
     -> get_tree_bdev()

    Same logic as in get_tree_bdev().

(12) virtio_fs_get_tree()

     Same logic as get_tree_keyed().

(13) gfs2_meta_get_tree()

     Forces reuse of existing gfs2 superblock.

     Mounting gfs2meta enforces that a gf2s superblock must already
     exist. If not, it will error out. Consequently, mounting gfs2meta
     with FSCONFIG_CMD_CREATE_EXCL would always fail. If reusing is the
     intent then FSCONFIG_CMD_CREATE_EXCL shouldn't be specified.

(14) kernfs_get_tree()

     Similar logic to get_tree_keyed().

(15) nfs_get_tree_common()

    Similar logic to get_tree_keyed().

    Already explicitly allows forcing the allocation of a new superblock
    via NFS_MOUNT_UNSHARED. This effectively turns it into
    get_tree_nodev().

Link: [1] https://lore.kernel.org/linux-block/20230704-fasching-wertarbeit-7c6ffb01c83d@brauner
Link: [2] https://lore.kernel.org/linux-block/20230705-pumpwerk-vielversprechend-a4b1fd947b65@brauner
Link: [3] https://lore.kernel.org/linux-fsdevel/20230725-einnahmen-warnschilder-17779aec0a97@brauner
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Aleksa Sarai <cyphar@cyphar.com>
Message-Id: <20230802-vfs-super-exclusive-v2-4-95dc4e41b870@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
2023-08-14 18:48:02 +02:00
..
android binder: return pending info for frozen async txns 2023-01-19 17:14:18 +01:00
byteorder uapi: Fix undefined __always_inline on non-glibc systems 2021-12-21 15:09:46 -08:00
caif
can can: uapi: move CAN_RAW_FILTER_MAX definition to raw.h 2023-06-22 09:44:28 +02:00
cifs cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
dvb media: dvb: bump DVB API version 2023-05-14 16:05:28 +01:00
genwqe
hdlc
hsi headers: Remove some left-over license text in include/uapi/linux/hsi/ 2022-11-17 22:49:39 +01:00
iio iio: add modifers for pitch, yaw, roll 2022-09-21 18:42:55 +01:00
isdn
misc
mmc treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
netfilter netfilter: nf_tables: Introduce NFT_MSG_GETSETELEM_RESET 2023-06-26 08:05:57 +02:00
netfilter_arp treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
netfilter_bridge treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
netfilter_ipv4 treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
netfilter_ipv6 netfilter: ip6t_LOG: Fix a typo in a comment 2022-08-09 19:51:05 +02:00
nfsd NFSD: Handle new xprtsec= export option 2023-04-27 18:49:24 -04:00
raid treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
sched
spi spi: add SPI_MOSI_IDLE_LOW mode bit 2023-05-30 15:20:08 +01:00
sunrpc
surface_aggregator
tc_act net/sched: act_tunnel_key: add support for "don't fragment" 2023-03-30 23:24:24 -07:00
tc_ematch
usb hardening fixes for v6.5-rc1 2023-07-08 12:08:39 -07:00
a.out.h
acct.h taskstats: version 12 with thread group and exe info 2022-04-29 14:38:03 -07:00
acrn.h virt: acrn: Mark the uuid field as unused 2022-11-23 19:55:22 +01:00
adb.h
adfs_fs.h
affs_hardblocks.h block: change all __u32 annotations to __be32 in affs_hardblocks.h 2023-06-20 14:28:17 -06:00
agpgart.h agpgart.h: do not include <stdlib.h> from exported header 2022-05-13 10:56:10 +02:00
aio_abi.h
am437x-vpfe.h
amt.h amt: add control plane of amt interface 2021-11-01 13:36:08 +00:00
apm_bios.h
arcfb.h
arm_sdei.h
aspeed-lpc-ctrl.h
aspeed-p2a-ctrl.h
aspeed-video.h media: aspeed: Support aspeed mode to reduce compressed data 2022-11-04 16:56:41 +01:00
atalk.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_tcp.h
atm_zatm.h net: atm: bring back zatm uAPI 2022-08-11 10:31:19 -07:00
atm.h
atmapi.h
atmarp.h
atmbr2684.h atm: uapi: fix spelling typos in comments 2022-12-22 18:18:37 -08:00
atmclip.h
atmdev.h Move COMPAT_ATM_ADDPARTY to net/atm/svc.c 2023-03-10 21:05:16 +01:00
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
audit.h audit: fix undefined behavior in bit shift for AUDIT_BIT 2022-10-31 07:29:47 -04:00
auto_dev-ioctl.h autofs: use flexible array in ioctl structure 2023-05-30 16:42:00 -07:00
auto_fs4.h
auto_fs.h
auxvec.h rseq: Introduce feature size and alignment ELF auxiliary vector entries 2022-12-27 12:52:10 +01:00
ax25.h
batadv_packet.h batman-adv: tvlv: prepare for tvlv enabled multicast packet type 2023-01-21 19:01:59 +01:00
batman_adv.h
baycom.h
bcm933xx_hcs.h
bfs_fs.h
binfmts.h
blkpg.h
blktrace_api.h
blkzoned.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
bpf_common.h
bpf_perf_event.h
bpf.h bpf-next-for-netdev 2023-06-24 14:52:28 -07:00
bpfilter.h
bpqether.h
bsg.h
bt-bmc.h
btf.h bpf: Add btf enum64 support 2022-06-07 10:20:42 -07:00
btrfs_tree.h btrfs: add nr_global_roots to the super block definition 2022-12-05 18:00:58 +01:00
btrfs.h btrfs: scrub: reject unsupported scrub flags 2023-04-17 19:52:19 +02:00
cachefiles.h cachefiles: implement on-demand read 2022-05-18 00:11:18 +08:00
can.h can: uapi: move CAN_RAW_FILTER_MAX definition to raw.h 2023-06-22 09:44:28 +02:00
capability.h capability: erase checker warnings about struct __user_cap_data_struct 2023-06-06 17:05:54 -04:00
capi.h
cciss_defs.h
cciss_ioctl.h
ccs.h
cdrom.h cdrom: mark CDROMGETSPINDOWN/CDROMSETSPINDOWN obsolete 2022-05-15 18:31:28 -06:00
cec-funcs.h media: cec: add support for Absolute Volume Control 2022-09-24 08:50:04 +02:00
cec.h media: cec: add support for Absolute Volume Control 2022-09-24 08:50:04 +02:00
cfm_bridge.h
cgroupstats.h
chio.h
close_range.h
cn_proc.h
coda.h
coff.h
comedi.h comedi: Move the main COMEDI headers 2021-11-26 16:48:59 +01:00
connector.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
const.h uapi/linux/const.h: prefer ISO-friendly __typeof__ 2023-04-18 16:39:34 -07:00
coresight-stm.h
counter.h counter: i8254: Introduce the Intel 8254 interface library module 2023-06-08 10:11:17 -04:00
cramfs_fs.h
cryptouser.h
cuda.h
cxl_mem.h cxl/mbox: Deprecate poison commands 2023-04-22 14:41:30 -07:00
cyclades.h tty: Partially revert the removal of the Cyclades public API 2022-01-26 14:49:46 +01:00
cycx_cfm.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
dcbnl.h net: dcb: add new rewrite table 2023-01-20 09:33:22 +00:00
dccp.h
devlink.h devlink: Expose port function commands to control migratable 2022-12-07 20:09:18 -08:00
dlm_device.h treewide: Replace 0-element memcpy() destinations with flexible arrays 2021-10-18 12:28:53 -07:00
dlm_plock.h
dlm.h fs: dlm: remove deprecated code parts 2023-03-06 15:49:07 -06:00
dlmconstants.h fs: dlm: remove deprecated code parts 2023-03-06 15:49:07 -06:00
dm-ioctl.h dm: split discards further if target sets max_discard_granularity 2023-03-30 15:57:50 -04:00
dm-log-userspace.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
dma-buf.h Merge drm/drm-next into drm-misc-next 2022-06-20 18:21:25 +02:00
dma-heap.h
dns_resolver.h
dqblk_xfs.h
dw100.h media: uapi: Add a control for DW100 driver 2022-08-29 15:32:13 +02:00
edd.h
efs_fs_sb.h
elf-em.h LoongArch: Add ELF-related definitions 2022-06-03 20:09:27 +08:00
elf-fdpic.h
elf.h RISC-V Patches for the 6.5 Merge Window, Part 1 2023-06-30 09:37:26 -07:00
errno.h
errqueue.h
erspan.h
ethtool_netlink.h net: ethtool: correct MAX attribute value for stats 2023-06-12 08:50:48 +01:00
ethtool.h net: ethtool: netlink: retrieve stats from multiple sources (eMAC, pMAC) 2023-01-23 12:44:18 +00:00
eventfd.h eventfd: add a uapi header for eventfd userspace APIs 2023-06-15 14:55:15 +02:00
eventpoll.h Move ep_take_care_of_epollwakeup() to fs/eventpoll.c 2023-03-10 21:05:16 +01:00
ext4.h ext4: Add a uapi header for ext4 userspace APIs 2023-04-19 23:39:42 -04:00
f2fs.h f2fs: introduce F2FS_IOC_START_ATOMIC_REPLACE 2022-11-28 12:46:23 -08:00
fadvise.h
falloc.h
fanotify.h fanotify: define struct members to hold response decision context 2023-02-07 12:53:53 +01:00
fb.h linux/fb.h: Spelling s/palette/palette/ 2022-04-04 08:55:23 +02:00
fcntl.h exportfs: allow exporting non-decodeable file handles to userspace 2023-05-25 13:16:57 +02:00
fd.h
fdreg.h
fib_rules.h
fiemap.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
filter.h
firewire-cdev.h firewire: fix warnings to generate UAPI documentation 2023-06-06 07:54:00 +09:00
firewire-constants.h
fou.h ynl: broaden the license even more 2023-03-16 21:20:32 -07:00
fpga-dfl.h
fs.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
fscrypt.h fscrypt: remove unused Speck definitions 2022-12-01 19:58:50 -08:00
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 fuse: optional supplementary group in create requests 2023-01-26 17:10:38 +01:00
futex.h futex: Implement sys_futex_waitv() 2021-10-07 13:51:11 +02:00
gameport.h
gen_stats.h
genetlink.h genetlink: correct uAPI defines 2022-08-10 13:49:50 +01:00
gfs2_ondisk.h
gpio.h gpiolib: cdev: Add hardware timestamp clock type 2022-05-04 11:06:13 +02:00
gsmmux.h tty: n_gsm: add ioctl for DLC specific parameter configuration 2023-03-29 10:50:48 +02:00
gtp.h gtp: Implement GTP echo request 2022-03-11 08:28:05 -08:00
handshake.h net/handshake: Enable the SNI extension to work properly 2023-05-24 22:05:24 -07:00
hash_info.h
hdlc.h
hdlcdrv.h
hdreg.h
hid.h HID: convert defines of HID class requests into a proper enum 2022-09-20 11:53:32 +01:00
hiddev.h
hidraw.h
hpet.h
hsr_netlink.h
hw_breakpoint.h Move bp_type_idx to include/linux/hw_breakpoint.h 2023-03-10 21:05:16 +01:00
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 Revert "Merge branch 'mctp-i2c-driver'" 2021-11-15 07:53:10 -08:00
i2c.h Revert "Merge branch 'mctp-i2c-driver'" 2021-11-15 07:53:10 -08:00
i2o-dev.h
i8k.h
icmp.h
icmpv6.h
idxd.h dmaengine: idxd: process batch descriptor completion record faults 2023-04-12 23:18:45 +05:30
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 crypto: af_alg - Support symmetric encryption via keyring keys 2022-10-28 12:36:34 +08:00
if_arcnet.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
if_arp.h
if_bonding.h
if_bridge.h bridge: vlan: Allow setting VLAN neighbor suppression state 2023-04-21 08:25:50 +01:00
if_cablemodem.h
if_eql.h
if_ether.h can: canxl: update CAN infrastructure for CAN XL frames 2022-09-15 09:08:09 +02:00
if_fc.h
if_fddi.h
if_hippi.h
if_infiniband.h
if_link.h net: vxlan: Add nolocalbypass option to vxlan. 2023-05-13 17:02:33 +01:00
if_ltalk.h
if_macsec.h net: macsec: Expose MACSEC_SALT_LEN definition to user space 2022-08-18 20:37:35 -07:00
if_packet.h net/packet: support mergeable feature of virtio 2023-04-21 12:01:58 +01:00
if_phonet.h
if_plip.h
if_ppp.h
if_pppol2tp.h
if_pppox.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
if_slip.h
if_team.h
if_tun.h uapi/linux/if_tun.h: Added new offload types for USO4/6. 2022-12-12 09:29:56 +00:00
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
if.h
ife.h
igmp.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
ila.h
in6.h
in_route.h
in.h ipv{4,6}/raw: fix output xfrm lookup wrt protocol 2023-05-23 15:38:59 +02:00
inet_diag.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
inotify.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
input-event-codes.h HID: add mapping for camera access keys 2022-11-22 17:50:36 -08:00
input.h Input updates for v5.19-rc6 2022-07-17 07:52:46 -07:00
io_uring.h nvme: improved uring polling 2023-06-28 16:09:41 -06:00
ioam6_genl.h
ioam6_iptunnel.h uapi: ioam: Insertion frequency 2022-02-04 20:24:45 -08:00
ioam6.h ipv6: ioam: Replace 0-length array with flexible array 2023-01-06 19:22:53 -08:00
ioctl.h
iommu.h iommu: Remove guest pasid related interfaces and definitions 2022-02-28 13:25:48 +01:00
iommufd.h iommufd: vfio container FD ioctl compatibility 2022-11-30 20:16:49 -04:00
ioprio.h scsi: block: Improve ioprio value validity checks 2023-06-16 12:04:30 -04:00
ip6_tunnel.h
ip_vs.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
ip.h uapi: add missing ip/ipv6 header dependencies for linux/stddef.h 2023-02-06 09:01:00 +00:00
ipc.h
ipmi_bmc.h
ipmi_msgdefs.h
ipmi_ssif_bmc.h ipmi: ssif_bmc: Add SSIF BMC driver 2022-10-17 09:51:26 -05:00
ipmi.h ipmi: Add support for IPMB direct messages 2021-10-05 06:54:16 -05:00
ipsec.h
ipv6_route.h
ipv6.h uapi: net: ipv6: Replace fake flex-array with flex-array member 2023-03-30 14:06:56 -06:00
irqnr.h
iso_fs.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
isst_if.h platform/x86: ISST: Add SST-TF support via TPMI 2023-03-16 15:18:02 +01:00
ivtv.h
ivtvfb.h
jffs2.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
joystick.h
kcm.h
kcmp.h
kcov.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
kd.h VT: Add KD_FONT_OP_SET/GET_TALL operations 2023-01-19 16:28:57 +01:00
kdev_t.h
kernel-page-flags.h
kernel.h
kernelcapi.h
kexec.h LoongArch: Add ELF-related definitions 2022-06-03 20:09:27 +08:00
keyboard.h
keyctl.h
kfd_ioctl.h drm/amdkfd: bump kfd ioctl minor version for event age availability 2023-06-15 11:37:55 -04:00
kfd_sysfs.h drm/amdkfd: display debug capabilities 2023-06-09 12:34:45 -04:00
kvm_para.h
kvm.h Common KVM changes for 6.5: 2023-07-01 07:07:55 -04:00
l2tp.h uapi: move IPPROTO_L2TP to in.h 2022-09-20 09:13:38 +02:00
landlock.h landlock: Clarify documentation for the LANDLOCK_ACCESS_FS_REFER right 2023-02-21 18:15:59 +01:00
libc-compat.h
limits.h
lirc.h media: lirc: revert removal of unused feature flags 2022-05-25 09:51:36 -07:00
llc.h
loadpin.h LoadPin: Enable loading from trusted dm-verity devices 2022-07-08 10:46:53 -07:00
loop.h loop: remove most the top-of-file boilerplate comment from the UAPI header 2022-05-10 06:30:05 -06:00
lp.h
lwtunnel.h xfrm: lwtunnel: add lwtunnel support for xfrm interfaces in collect_md mode 2022-08-29 10:44:08 +02:00
magic.h mm: Convert all PageMovable users to movable_operations 2022-08-02 12:34:03 -04:00
major.h
map_to_7segment.h
map_to_14segment.h uapi: Add <linux/map_to_14segment.h> 2021-10-21 23:36:28 +02:00
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 net: mdio: add clause 73 to ethtool conversion helper 2023-05-24 09:13:22 -07:00
media-bus-format.h drm-misc-next for v6.3: 2023-01-04 14:59:25 +01:00
media.h media: uapi: Use unsigned int values for assigning bits in u32 fields 2023-05-25 16:21:22 +02:00
mei_uuid.h mei: Move uuid.h to the MEI namespace 2023-03-23 17:25:46 +01:00
mei.h mei: Move uuid.h to the MEI namespace 2023-03-23 17:25:46 +01:00
membarrier.h sched/membarrier: Introduce MEMBARRIER_CMD_GET_REGISTRATIONS 2023-01-07 11:29:29 +01:00
memfd.h mm/memfd: add MFD_NOEXEC_SEAL and MFD_EXEC 2023-01-18 17:12:37 -08:00
mempolicy.h mm/mempolicy: add MPOL_PREFERRED_MANY for multiple preferred nodes 2021-09-03 09:58:17 -07:00
mii.h
minix_fs.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
mman.h cachestat: implement cachestat syscall 2023-06-09 16:25:16 -07:00
mmtimer.h
module.h module: add in-kernel support for decompressing 2022-01-11 18:45:02 -08:00
mount.h fs: add FSCONFIG_CMD_CREATE_EXCL 2023-08-14 18:48:02 +02:00
mpls_iptunnel.h
mpls.h
mptcp.h mptcp: introduce MPTCP_FULL_INFO getsockopt 2023-06-21 22:45:57 -07:00
mqueue.h
mroute6.h net: ip6mr: add support for passing full packet on wrong mif 2022-02-19 16:05:54 +00:00
mroute.h
mrp_bridge.h
msdos_fs.h
msg.h
mtio.h
nbd-netlink.h
nbd.h uapi nbd: add cookie alias to handle 2023-04-27 19:15:11 -06:00
ncsi.h
ndctl.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
neighbour.h bridge: Add MAC Authentication Bypass (MAB) support 2022-11-03 20:46:32 -07:00
net_dropmon.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
net_namespace.h
net_tstamp.h net_tstamp: add SOF_TIMESTAMPING_OPT_ID_TCP 2022-12-08 19:49:21 -08:00
net.h
netconf.h
netdev.h ynl: broaden the license even more 2023-03-16 21:20:32 -07:00
netdevice.h
netfilter_arp.h
netfilter_bridge.h
netfilter_ipv4.h
netfilter_ipv6.h
netfilter.h netfilter: remove NFPROTO_DECNET 2022-09-07 16:46:03 +02:00
netlink_diag.h
netlink.h netlink: remove the flex array from struct nlmsghdr 2022-11-18 18:36:54 -08:00
netrom.h
nexthop.h
nfc.h nfc: uapi: use kernel size_t to fix user-space builds 2021-12-27 14:58:37 +00:00
nfs2.h
nfs3.h
nfs4_mount.h
nfs4.h NFSv4.1 support for NFS4_RESULT_PRESERVER_UNLINKED 2022-02-25 18:50:12 -05:00
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
nfs.h
nfsacl.h
nilfs2_api.h
nilfs2_ondisk.h
nitro_enclaves.h nitro_enclaves: Add fixes for checkpatch spell check reports 2021-09-14 11:11:20 +02:00
nl80211-vnd-intel.h nl80211: vendor-cmd: intel: add more details for IWL_MVM_VENDOR_CMD_HOST_GET_OWNERSHIP 2021-10-21 17:25:17 +02:00
nl80211.h wifi: nl80211/reg: add no-EHT regulatory flag 2023-06-21 14:01:29 +02:00
nsfs.h
nubus.h
nvme_ioctl.h nvme: enable uring-passthrough for admin commands 2022-05-20 06:17:33 -06: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: add support for l4 symmetric hashing 2023-06-12 09:46:30 +01:00
packet_diag.h
param.h
parport.h ata: parport_pc: add 16-bit and 8-bit fast EPP transfer flags 2023-03-23 12:22:19 +09:00
patchkey.h
pci_regs.h PCI: Add PCI_EXT_CAP_ID_PL_32GT define 2023-05-31 16:34:38 -05:00
pci.h
pcitest.h
perf_event.h perf: Add perf_event_attr::config3 2023-02-07 11:52:00 +00:00
personality.h
pfkeyv2.h xfrm: Add support for SM4 symmetric cipher algorithm 2021-12-23 09:32:51 +01:00
pfrut.h ACPI: Introduce Platform Firmware Runtime Telemetry driver 2021-12-27 17:12:58 +01:00
pg.h
phantom.h
phonet.h
pidfd.h
pkt_cls.h net: flower: add support for matching cfm fields 2023-06-12 17:01:45 -07:00
pkt_sched.h net/sched: taprio: add netlink reporting for offload statistics counters 2023-05-31 10:00:30 +01:00
pktcdvd.h pktcdvd: Get rid of custom printing macros 2023-06-07 14:26:09 -06:00
pmu.h
poll.h
posix_acl_xattr.h
posix_acl.h
posix_types.h
ppdev.h
ppp_defs.h
ppp-comp.h
ppp-ioctl.h
pps.h
pr.h block: Add error codes for common PR failures 2022-12-01 03:22:20 +00:00
prctl.h riscv: Add prctl controls for userspace vector management 2023-06-08 07:16:53 -07:00
psample.h
psci.h firmware/psci: Fix MEM_PROTECT_RANGE function numbers 2023-01-06 17:12:39 +00:00
psp-sev.h crypto: ccp - Name -1 return value as SEV_RET_NO_FW_CALL 2023-03-21 11:37:32 +01:00
ptp_clock.h ptp: Add .getmaxphase callback to ptp_clock_info 2023-06-20 09:02:33 +01:00
ptrace.h ptrace: Provide set/get interface for syscall user dispatch 2023-04-16 14:23:07 +02:00
qemu_fw_cfg.h
qnx4_fs.h
qnxtypes.h
qrtr.h
quota.h
radeonfb.h
random.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
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 Increase default MLOCK_LIMIT to 8 MiB 2021-12-10 17:10:55 -08:00
rfkill.h rfkill: uapi: fix RFKILL_IOCTL_MAX_SIZE ioctl request definition 2022-05-09 14:00:07 +02:00
rio_cm_cdev.h
rio_mport_cdev.h
rkisp1-config.h media: rockchip: rkisp1: Define macros for DPCC configurations in UAPI 2022-09-24 08:31:54 +02:00
romfs_fs.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
rose.h
route.h
rpl_iptunnel.h
rpl.h net: ipv6: rpl_iptunnel: Replace 0-length arrays with flexible arrays 2023-01-06 19:28:01 -08:00
rpmsg_types.h
rpmsg.h rpmsg: ctrl: Introduce new RPMSG_CREATE/RELEASE_DEV_IOCTL controls 2022-03-13 11:49:53 -05:00
rseq.h rseq: Extend struct rseq with per-memory-map concurrency ID 2022-12-27 12:52:12 +01:00
rtc.h rtc: add new RTC_FEATURE_ALARM_WAKEUP_ONLY feature 2022-03-23 19:58:40 +01:00
rtnetlink.h net/sched: act_api: add specific EXT_WARN_MSG for tc action 2023-03-16 21:25:45 -07:00
rxrpc.h
scc.h
sched.h
scif_ioctl.h
screen_info.h
sctp.h sctp: add weighted fair queueing stream scheduler 2023-03-09 11:31:44 +01:00
seccomp.h seccomp: Add wait_killable semantic to seccomp user notifier 2022-05-03 14:11:58 -07:00
securebits.h
sed-opal.h sed-opal: geometry feature reporting command 2023-04-19 14:07:13 -06:00
seg6_genl.h
seg6_hmac.h
seg6_iptunnel.h Networking changes for 6.0. 2022-08-03 16:29:08 -07:00
seg6_local.h seg6: add NEXT-C-SID support for SRv6 End behavior 2022-09-20 12:33:22 +02:00
seg6.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
selinux_netlink.h
sem.h
serial_core.h serial: 8250_pci1xxxx: Add driver for quad-uart support 2023-02-08 13:10:15 +01:00
serial_reg.h serial: 8250: Define IIR 64 byte bit & cleanup related code 2023-01-19 15:01:20 +01:00
serial.h serial: Convert serial_rs485 to kernel doc 2022-11-03 03:43:05 +01:00
serio.h
sev-guest.h x86/sev: Change snp_guest_issue_request()'s fw_err argument 2023-03-21 15:43:19 +01:00
shm.h
signal.h
signalfd.h
smc_diag.h Partially revert "net/smc: Add netlink net namespace support" 2022-02-02 07:42:41 -08:00
smc.h net/smc: Extend SMC-R link group netlink attribute 2022-07-18 11:19:17 +01:00
smiapp.h
snmp.h icmp: Add counters for rate limits 2023-01-26 10:52:18 +01:00
sock_diag.h
socket.h socket: Don't use u8 type in uapi socket.h 2022-06-01 16:48:05 -07:00
sockios.h
sonet.h
sonypi.h
sound.h
soundcard.h kbuild: move headers_check.pl to usr/include/ 2022-01-08 17:41:00 +09:00
stat.h statx: add direct I/O alignment information 2022-09-11 19:47:04 -05:00
stddef.h uapi/linux/stddef.h: Add include guards 2022-03-31 13:04:44 -07:00
stm.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
string.h
suspend_ioctls.h
swab.h include/uapi/linux/swab: Fix potentially missing __always_inline 2022-11-09 14:06:51 +01:00
switchtec_ioctl.h
sync_file.h dma-buf/sync_file: Surface sync-file uABI 2023-03-28 13:39:02 -07:00
synclink.h
sysctl.h net, neigh: introduce interval_probe_time_ms for periodic probe 2022-06-30 13:14:35 +02:00
sysinfo.h
target_core_user.h scsi: target: uapi: Replace fake flex-array with flexible-array member 2023-03-24 16:59:09 -04:00
taskstats.h delayacct: track delays from IRQ/SOFTIRQ 2023-04-18 16:39:34 -07:00
tcp_metrics.h
tcp.h tcp: add rcv_wnd and plb_rehash to TCP_INFO 2022-10-28 10:47:42 +01:00
tdx-guest.h virt: Add TDX guest driver 2022-11-17 11:04:23 -08:00
tee.h tee: remove flags TEE_IOCTL_SHM_MAPPED and TEE_IOCTL_SHM_DMA_BUF 2022-04-26 10:17:03 +02:00
termios.h
thermal.h thermal: netlink: Add a new event to notify CPU capabilities change 2022-02-03 19:50:49 +01:00
time_types.h
time.h
timerfd.h
times.h
timex.h
tiocl.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
tipc.h
tls.h net: tls: Add ARIA-GCM algorithm 2022-09-27 17:29:09 -07:00
toshiba.h
tps6594_pfsm.h misc: tps6594-pfsm: Add driver for TI TPS6594 PFSM 2023-06-15 13:41:53 +02:00
tty_flags.h
tty.h tty: Add N_CAN327 line discipline ID for ELM327 based CAN driver 2022-06-27 16:25:41 +02:00
types.h types: Introduce [us]128 2023-06-05 09:36:35 +02:00
ublk_cmd.h ublk: add control command of UBLK_U_CMD_GET_FEATURES 2023-06-04 08:34:14 -06: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 treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
usbip.h usbip: add USBIP_URB_* URB transfer flags 2022-08-31 09:07:53 +02:00
user_events.h tracing/user_events: Align structs with tabs for readability 2023-03-29 06:52:09 -04:00
userfaultfd.h mm: userfaultfd: add UFFDIO_CONTINUE_MODE_WP to install WP PTEs 2023-04-05 19:42:48 -07:00
userio.h
utime.h
utsname.h
uuid.h mei: Move uuid.h to the MEI namespace 2023-03-23 17:25:46 +01:00
uvcvideo.h media: uvcvideo: Silence memcpy() run-time false positive warnings 2023-01-15 23:45:15 +02:00
v4l2-common.h headers: Remove some left-over license text in include/uapi/linux/v4l2-* 2022-12-07 17:58:46 +01:00
v4l2-controls.h media: Add AV1 uAPI 2023-06-09 16:13:01 +01:00
v4l2-dv-timings.h headers: Remove some left-over license text in include/uapi/linux/v4l2-* 2022-12-07 17:58:46 +01:00
v4l2-mediabus.h headers: Remove some left-over license text in include/uapi/linux/v4l2-* 2022-12-07 17:58:46 +01:00
v4l2-subdev.h media: v4l2-subdev: Add new ioctl for client capabilities 2023-04-15 08:58:41 +01:00
vbox_err.h
vbox_vmmdev_types.h
vboxguest.h
vdpa.h vdpa: merge functionally duplicated dev_features attributes 2022-12-28 05:09:46 -05:00
vduse.h vduse: Support querying information of IOVA regions 2022-08-11 04:26:08 -04:00
veth.h
vfio_ccw.h
vfio_zdev.h vfio-pci/zdev: different maxstbl for interpreted devices 2022-07-11 09:54:37 +02:00
vfio.h VFIO updates for v6.5-rc1 2023-06-30 15:22:09 -07:00
vhost_types.h vhost: allow userspace to create workers 2023-07-03 12:15:14 -04:00
vhost.h vhost: Allow worker switching while work is queueing 2023-07-03 12:15:14 -04:00
videodev2.h media: Add NV15_4L4 pixel format 2023-06-09 16:14:40 +01:00
virtio_9p.h treewide: uapi: Replace zero-length arrays with flexible-array members 2022-06-28 21:26:05 +02:00
virtio_balloon.h
virtio_blk.h virtio-blk: fix to match virtio spec 2023-04-04 11:01:57 -04:00
virtio_bt.h virtio_bt: Fix alignment in configuration struct 2022-12-12 14:19:23 -08:00
virtio_config.h virtio: add VIRTIO_F_NOTIFICATION_DATA feature support 2023-04-21 03:02:35 -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_gpio: drop packed attribute 2021-11-04 16:36:54 +01:00
virtio_gpu.h virtio-gpu api: multiple context types with explicit initialization 2021-09-29 09:22:29 +02:00
virtio_i2c.h i2c: virtio: Add support for zero-length requests 2021-11-01 05:26:48 -04:00
virtio_ids.h virtio: fix virtio transitional ids 2022-05-10 07:22:28 -04:00
virtio_input.h
virtio_iommu.h iommu/virtio: Add definitions for VIRTIO_IOMMU_F_BYPASS_CONFIG 2021-12-06 15:03:05 +01:00
virtio_mem.h virtio-mem: support VIRTIO_MEM_F_UNPLUGGED_INACCESSIBLE 2021-11-10 15:32:38 +01:00
virtio_mmio.h
virtio_net.h net: virtio_net: implement exact header length guest feature 2023-03-13 16:32:16 -07:00
virtio_pci.h virtio_pci: struct virtio_pci_common_cfg add queue_reset 2022-08-11 04:06:40 -04:00
virtio_pcidev.h um: virt-pci: fix uapi documentation 2021-08-26 22:28:03 +02:00
virtio_pmem.h
virtio_ring.h virtio: kerneldocs fixes and enhancements 2022-08-16 01:40:24 -04:00
virtio_rng.h
virtio_scmi.h firmware: arm_scmi: Add virtio transport 2021-08-05 10:24:08 +01:00
virtio_scsi.h
virtio_snd.h
virtio_types.h
virtio_vsock.h virtio/vsock: add 'VIRTIO_VSOCK_SEQ_EOR' bit. 2021-09-05 16:23:09 -04:00
vm_sockets_diag.h
vm_sockets.h vsock: Enable y2038 safe timeval for timeout 2021-10-08 16:21:53 +01:00
vmcore.h
vsockmon.h
vt.h
vtpm_proxy.h
wait.h
watch_queue.h
watchdog.h
wireguard.h
wireless.h uapi: wireless: Replace zero-length array with flexible-array member 2023-05-28 19:07:48 -06:00
wmi.h
wwan.h
x25.h
xattr.h
xdp_diag.h
xfrm.h xfrm: add new packet offload flag 2022-12-05 10:30:47 +01:00
xilinx-v4l2-controls.h
zorro_ids.h
zorro.h