twx-linux/include/uapi/linux
Joel Fernandes (Google) ab3948f58f mm/memfd: add an F_SEAL_FUTURE_WRITE seal to memfd
Android uses ashmem for sharing memory regions.  We are looking forward
to migrating all usecases of ashmem to memfd so that we can possibly
remove the ashmem driver in the future from staging while also
benefiting from using memfd and contributing to it.  Note staging
drivers are also not ABI and generally can be removed at anytime.

One of the main usecases Android has is the ability to create a region
and mmap it as writeable, then add protection against making any
"future" writes while keeping the existing already mmap'ed
writeable-region active.  This allows us to implement a usecase where
receivers of the shared memory buffer can get a read-only view, while
the sender continues to write to the buffer.  See CursorWindow
documentation in Android for more details:

  https://developer.android.com/reference/android/database/CursorWindow

This usecase cannot be implemented with the existing F_SEAL_WRITE seal.
To support the usecase, this patch adds a new F_SEAL_FUTURE_WRITE seal
which prevents any future mmap and write syscalls from succeeding while
keeping the existing mmap active.

A better way to do F_SEAL_FUTURE_WRITE seal was discussed [1] last week
where we don't need to modify core VFS structures to get the same
behavior of the seal.  This solves several side-effects pointed by Andy.
self-tests are provided in later patch to verify the expected semantics.

[1] https://lore.kernel.org/lkml/20181111173650.GA256781@google.com/

Thanks a lot to Andy for suggestions to improve code.

Link: http://lkml.kernel.org/r/20190112203816.85534-2-joel@joelfernandes.org
Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
Acked-by: John Stultz <john.stultz@linaro.org>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Jann Horn <jannh@google.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Hugh Dickins <hughd@google.com>
Cc: J. Bruce Fields <bfields@fieldses.org>
Cc: Jeff Layton <jlayton@kernel.org>
Cc: Marc-Andr Lureau <marcandre.lureau@redhat.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2019-03-05 21:07:19 -08:00
..
android binderfs: use __u32 for device numbers 2019-01-22 12:13:17 +01:00
byteorder
caif
can
cifs
dvb media: dvb/audio.h: get rid of unused APIs 2018-07-30 16:21:49 -04:00
genwqe
hdlc
hsi
iio
isdn
mmc mmc: document 'Reliable Write' bit in uapi header 2018-12-17 08:26:24 +01:00
netfilter netfilter: nft_tunnel: Add NFTA_TUNNEL_MODE options 2019-02-04 14:39:58 +01:00
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
nfsd
raid
sched
spi
sunrpc
tc_act net: Move all TC actions identifiers to one place 2019-02-10 09:28:43 -08:00
tc_ematch
usb USB for v4.20 2018-10-05 08:32:01 -07:00
wimax
a.out.h
acct.h
adb.h
adfs_fs.h
affs_hardblocks.h
agpgart.h
aio_abi.h aio: Comment use of IOCB_FLAG_IOPRIO aio flag 2018-11-19 19:03:43 -07:00
am437x-vpfe.h
apm_bios.h
arcfb.h
arm_sdei.h
aspeed-lpc-ctrl.h
atalk.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_tcp.h
atm_zatm.h
atm.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 Fix a handful of audit-related issue 2019-01-07 08:45:47 -08:00
auto_dev-ioctl.h
auto_fs4.h
auto_fs.h autofs: add strictexpire mount option 2019-01-04 13:13:47 -08:00
auxvec.h
ax25.h
b1lli.h
batadv_packet.h batman-adv: Fix typo "reseved" -> "reserved" 2019-02-09 14:27:47 +01:00
batman_adv.h batman-adv: Add throughput_override hardif genl configuration 2019-02-09 14:28:15 +01:00
baycom.h
bcache.h bcache: style fix to add a blank line after declarations 2018-08-11 15:46:41 -06:00
bcm933xx_hcs.h
bfs_fs.h bfs: extra sanity checking and static inode bitmap 2019-01-04 13:13:47 -08:00
binfmts.h
blkpg.h
blktrace_api.h
blkzoned.h uapi: fix ioctl documentation 2019-01-24 11:11:42 -07:00
bpf_common.h
bpf_perf_event.h
bpf.h bpf: add bpf helper bpf_skb_ecn_set_ce 2019-03-02 10:48:27 -08:00
bpfilter.h
bpqether.h
bsg.h
bt-bmc.h
btf.h bpf: btf: fix struct/union/fwd types with kind_flag 2018-12-18 01:11:59 +01:00
btrfs_tree.h btrfs: Introduce support for FSID change without metadata rewrite 2018-12-17 14:51:37 +01:00
btrfs.h btrfs: Introduce support for FSID change without metadata rewrite 2018-12-17 14:51:37 +01:00
can.h
capability.h
capi.h
cciss_defs.h
cciss_ioctl.h
cdrom.h
cec-funcs.h
cec.h media: cec: add new tx/rx status bits to detect aborts/timeouts 2018-10-05 11:22:39 -04:00
cgroupstats.h
chio.h
cm4000_cs.h
cn_proc.h
coda_psdev.h
coda.h
coff.h
connector.h
const.h
coresight-stm.h
cramfs_fs.h
cryptouser.h crypto: user - rename err_cnt parameter 2018-12-07 14:15:00 +08:00
cuda.h
cyclades.h
cycx_cfm.h
dcbnl.h net: dcb: add DSCP to comment about priority selector types 2018-07-29 12:53:54 -07:00
dccp.h
devlink.h devlink: Rename devlink health attributes 2019-02-21 10:38:51 -08:00
dlm_device.h
dlm_netlink.h
dlm_plock.h
dlm.h
dlmconstants.h
dm-ioctl.h
dm-log-userspace.h
dma-buf.h
dn.h
dns_resolver.h dns: Allow the dns resolver to retrieve a server set 2018-10-04 09:40:52 -07:00
dqblk_xfs.h
edd.h
efs_fs_sb.h
elf-em.h arch/csky patches for 4.21-rc1 2019-01-05 09:50:07 -08:00
elf-fdpic.h
elf.h Here's the main MIPS pull for Linux 4.21. Core architecture changes 2018-12-26 10:45:33 -08:00
elfcore.h
errno.h
errqueue.h errqueue.h: Include time_types.h 2019-02-14 11:51:51 -05:00
erspan.h
ethtool.h net: phy: improve definition of __ETHTOOL_LINK_MODE_MASK_NBITS 2019-02-24 17:33:59 -08:00
eventpoll.h
fadvise.h
falloc.h
fanotify.h fanotify: introduce new event mask FAN_OPEN_EXEC_PERM 2018-11-13 18:41:05 +01:00
fb.h fbdev: make FB_BACKLIGHT a tristate 2018-12-20 19:13:07 +01:00
fcntl.h mm/memfd: add an F_SEAL_FUTURE_WRITE seal to memfd 2019-03-05 21:07:19 -08:00
fd.h
fdreg.h
fib_rules.h
fiemap.h
filter.h
firewire-cdev.h FireWire: clean up firewire-cdev.h kernel-doc 2018-09-06 09:40:59 -06:00
firewire-constants.h
flat.h
fou.h
fpga-dfl.h
fs.h Add Adiantum support for fscrypt 2019-01-06 12:21:11 -08:00
fsi.h
fsl_hypervisor.h
fsmap.h
fuse.h fuse: enable caching of symlinks 2018-10-15 15:43:07 +02:00
futex.h
gameport.h
gen_stats.h net/core: Add new basic hardware counter 2018-09-24 12:18:42 -07:00
genetlink.h
gfs2_ondisk.h
gigaset_dev.h
gpio.h gpio: uapi: Grammar s/array/array of/ 2018-09-13 10:46:24 +02:00
gsmmux.h
gtp.h
hash_info.h crypto: streebog - register Streebog in hash info for IMA 2018-11-16 14:09:40 +08:00
hdlc.h
hdlcdrv.h
hdreg.h
hid.h
hiddev.h
hidraw.h
hpet.h
hsr_netlink.h
hw_breakpoint.h
hyperv.h
hysdn_if.h
i2c-dev.h
i2c.h
i2o-dev.h
i8k.h
icmp.h
icmpv6.h bridge: Snoop Multicast Router Advertisements 2019-01-22 17:18:09 -08:00
if_addr.h if_addr: add IFA_TARGET_NETNSID 2018-09-05 22:27:11 -07:00
if_addrlabel.h
if_alg.h
if_arcnet.h
if_arp.h net: if_arp: use define instead of hard-coded value 2018-09-21 19:22:32 -07:00
if_bonding.h bonding: add support for xstats and export 3ad stats 2019-01-22 12:04:14 -08:00
if_bridge.h net: bridge: add no_linklocal_learn bool option 2018-11-27 15:04:15 -08:00
if_cablemodem.h
if_eql.h
if_ether.h
if_fc.h
if_fddi.h FDDI: defza: Add support for DEC FDDIcontroller 700 TURBOchannel adapter 2018-10-15 21:46:06 -07:00
if_frad.h
if_hippi.h
if_infiniband.h
if_link.h bonding: add support for xstats and export 3ad stats 2019-01-22 12:04:14 -08:00
if_ltalk.h
if_macsec.h
if_packet.h packet: add sockopt to ignore outgoing packets 2018-09-05 22:09:37 -07:00
if_phonet.h
if_plip.h
if_ppp.h
if_pppol2tp.h
if_pppox.h
if_slip.h
if_team.h
if_tun.h tun: implement carrier change 2018-11-30 17:16:38 -08:00
if_tunnel.h iptunnel: make TUNNEL_FLAGS available in uapi 2018-12-19 15:58:01 -08:00
if_vlan.h
if_x25.h
if_xdp.h
if.h
ife.h
igmp.h bridge: Snoop Multicast Router Advertisements 2019-01-22 17:18:09 -08:00
ila.h
in6.h net: ipv6: add socket option IPV6_ROUTER_ALERT_ISOLATE 2019-03-03 21:05:10 -08:00
in_route.h
in.h bridge: join all-snoopers multicast address 2019-01-22 17:18:08 -08:00
inet_diag.h inet_diag: fix reporting cgroup classid and fallback to priority 2019-02-12 13:35:57 -05:00
inotify.h
input-event-codes.h Merge branches 'for-4.20/upstream-fixes', 'for-4.21/core', 'for-4.21/hid-asus', 'for-4.21/hid-core', 'for-4.21/hid-cougar', 'for-4.21/hidraw', 'for-4.21/highres-wheel' and 'for-4.21/ish' into for-linus 2019-01-03 12:50:28 +01:00
input.h Input: input_event - fix the CONFIG_SPARC64 mixup 2019-01-24 00:38:39 -08:00
ioctl.h
ip6_tunnel.h
ip_vs.h
ip.h route: add support for directed broadcast forwarding 2018-07-29 12:37:06 -07:00
ipc.h
ipmi_bmc.h
ipmi_msgdefs.h
ipmi.h
ipsec.h
ipv6_route.h
ipv6.h
ipx.h
irqnr.h
isdn_divertif.h
isdn_ppp.h
isdn.h
isdnif.h
iso_fs.h
ivtv.h
ivtvfb.h
jffs2.h
joystick.h
Kbuild arch: remove stale comments "UAPI Header export list" 2019-01-06 09:46:51 +09:00
kcm.h
kcmp.h
kcov.h
kd.h
kdev_t.h
kernel-page-flags.h mm: convert PG_balloon to PG_offline 2019-03-05 21:07:14 -08:00
kernel.h
kernelcapi.h
kexec.h
keyboard.h
keyctl.h KEYS: Provide keyctls to drive the new key type ops for asymmetric keys [ver #2] 2018-10-26 09:30:46 +01:00
kfd_ioctl.h drm/amdkfd: Add DMABuf import functionality 2018-12-07 18:13:54 -05:00
kvm_para.h KVM: X86: Implement PV IPIs in linux guest 2018-08-06 17:59:22 +02:00
kvm.h x86/kvm/hyper-v: Introduce KVM_GET_SUPPORTED_HV_CPUID 2018-12-14 17:59:54 +01:00
l2tp.h l2tp: ignore L2TP_ATTR_MTU 2018-08-03 10:03:57 -07:00
libc-compat.h
lightnvm.h
limits.h
lirc.h
llc.h
loop.h
lp.h
lwtunnel.h
magic.h binder: implement binderfs 2018-12-19 09:40:13 +01:00
major.h
map_to_7segment.h
matroxfb.h
max2175.h
mdio.h net: phy: Add generic support for 2.5GBaseT and 5GBaseT 2019-02-13 19:17:53 -05:00
media-bus-format.h media: v4l: Add new 2X8 10-bit grayscale media bus code 2018-08-02 06:04:57 -04:00
media.h media: uapi/linux/media.h: add request API 2018-08-31 11:04:23 -04:00
mei.h
membarrier.h
memfd.h mm/hugetlb: add mmap() encodings for 32MB and 512MB page sizes 2018-10-05 16:32:04 -07:00
mempolicy.h
meye.h
mic_common.h
mic_ioctl.h
mii.h
minix_fs.h
mman.h mm/hugetlb: add mmap() encodings for 32MB and 512MB page sizes 2018-10-05 16:32:04 -07:00
mmtimer.h
module.h
mount.h vfs: Suppress MS_* flag defs within the kernel unless explicitly enabled 2018-12-20 16:32:56 +00:00
mpls_iptunnel.h
mpls.h
mqueue.h
mroute6.h ipmr: ip6mr: Create new sockopt to clear mfc cache or vifs 2019-02-21 13:05:05 -08:00
mroute.h ipmr: ip6mr: Create new sockopt to clear mfc cache or vifs 2019-02-21 13:05:05 -08:00
msdos_fs.h fat: move MAX_FAT to fat.h and change it to inline function 2019-01-04 13:13:47 -08:00
msg.h
mtio.h
n_r3964.h
nbd-netlink.h
nbd.h
ncsi.h net/ncsi: Configure multi-package, multi-channel modes with failover 2018-11-17 21:09:49 -08:00
ndctl.h UAPI: ndctl: Remove use of PAGE_SIZE 2018-10-17 13:56:58 -07:00
neighbour.h neighbor: Add protocol attribute 2018-12-16 12:15:25 -08:00
net_dropmon.h
net_namespace.h netns: enable to dump full nsid translation table 2018-11-27 16:20:20 -08:00
net_tstamp.h net: Use __kernel_clockid_t in uapi net_stamp.h 2018-12-18 15:59:29 -08:00
net.h
netconf.h route: add support for directed broadcast forwarding 2018-07-29 12:37:06 -07:00
netdevice.h
netfilter_arp.h
netfilter_bridge.h netfilter: bridge: define INT_MIN & INT_MAX in userspace 2018-10-25 10:25:22 +02:00
netfilter_decnet.h netfilter: remove NFC_* cache bits 2018-12-01 12:38:32 +01:00
netfilter_ipv4.h netfilter: remove NFC_* cache bits 2018-12-01 12:38:32 +01:00
netfilter_ipv6.h netfilter: remove NFC_* cache bits 2018-12-01 12:38:32 +01:00
netfilter.h netfilter: remove NFC_* cache bits 2018-12-01 12:38:32 +01:00
netlink_diag.h
netlink.h net: netlink: rename NETLINK_DUMP_STRICT_CHK -> NETLINK_GET_STRICT_CHK 2018-12-14 11:44:31 -08:00
netrom.h
nfc.h
nfs2.h
nfs3.h
nfs4_mount.h
nfs4.h
nfs_fs.h
nfs_idmap.h
nfs_mount.h
nfs.h
nfsacl.h
nilfs2_api.h
nilfs2_ondisk.h
nl80211.h nl80211: Allow set/del pmksa operations for AP 2019-01-25 21:09:21 +01:00
nsfs.h
nubus.h
nvme_ioctl.h
nvram.h
omap3isp.h
omapfb.h
oom.h
openvswitch.h
packet_diag.h
param.h
parport.h
patchkey.h
pci_regs.h PCI: Add support for Immediate Readiness 2018-09-28 12:47:34 -05:00
pci.h
pcitest.h
perf_event.h perf tools: Don't clone maps from parent when synthesizing forks 2018-10-31 10:18:01 -03:00
personality.h
pfkeyv2.h
pg.h
phantom.h
phonet.h
pkt_cls.h net: Change TCA_ACT_* to TCA_ID_* to match that of TCA_ID_POLICE 2019-02-10 09:28:43 -08:00
pkt_sched.h sch_cake: Permit use of connmarks as tin classifiers 2019-03-03 20:14:28 -08:00
pktcdvd.h
pmu.h macintosh/via-pmu: Replace via-pmu68k driver with via-pmu driver 2018-07-31 19:56:42 +10:00
poll.h
posix_acl_xattr.h
posix_acl.h
posix_types.h
ppdev.h
ppp_defs.h
ppp-comp.h
ppp-ioctl.h l2tp: remove pppol2tp_session_ioctl() 2018-08-11 12:13:49 -07:00
pps.h
pr.h
prctl.h arm64 festive updates for 4.21 2018-12-25 17:41:56 -08:00
psample.h
psci.h
psp-sev.h
ptp_clock.h ptp: uapi: change _IOW to IOWR in PTP_SYS_OFFSET_EXTENDED definition 2019-01-08 16:22:56 -05:00
ptrace.h
qemu_fw_cfg.h
qnx4_fs.h
qnxtypes.h
qrtr.h
quota.h
radeonfb.h
random.h
raw.h
rds.h rds: add type of service(tos) infrastructure 2019-02-04 14:59:12 -08:00
reboot.h
reiserfs_fs.h
reiserfs_xattr.h
resource.h
rfkill.h
rio_cm_cdev.h
rio_mport_cdev.h
romfs_fs.h
rose.h
route.h
rpmsg.h
rseq.h
rtc.h
rtnetlink.h
rxrpc.h
scc.h
sched.h
scif_ioctl.h
screen_info.h
sctp.h sctp: introduce SCTP_FUTURE/CURRENT/ALL_ASSOC 2019-01-30 00:44:06 -08:00
sdla.h
seccomp.h seccomp: add a return code to trap to userspace 2018-12-11 16:28:41 -08:00
securebits.h
sed-opal.h
seg6_genl.h
seg6_hmac.h
seg6_iptunnel.h
seg6_local.h
seg6.h
selinux_netlink.h
sem.h
serial_core.h tty: serial: Add RDA8810PL UART driver 2018-12-31 13:10:01 -08:00
serial_reg.h
serial.h tty/serial_core: add ISO7816 infrastructure 2018-10-02 13:38:55 -07:00
serio.h
shm.h mm/hugetlb: add mmap() encodings for 32MB and 512MB page sizes 2018-10-05 16:32:04 -07:00
signal.h
signalfd.h
smc_diag.h net/smc: retain old name for diag_mode field 2018-10-07 21:06:28 -07:00
smc.h
smiapp.h
snmp.h tcp: implement coalescing on backlog queue 2018-11-30 13:26:54 -08:00
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 kernel/sysctl: add panic_print into sysctl 2019-01-04 13:13:47 -08:00
sysinfo.h
target_core_user.h
taskstats.h delayacct: track delays from thrashing cache pages 2018-10-26 16:26:32 -07:00
tcp_metrics.h
tcp.h tcp: add SRTT to SCM_TIMESTAMPING_OPT_STATS 2018-11-17 20:34:36 -08:00
tee.h
termios.h
thermal.h
time_types.h time: Add time_types.h 2019-02-14 11:51:51 -05:00
time.h time: Add time_types.h 2019-02-14 11:51:51 -05:00
timerfd.h
times.h
timex.h
tiocl.h
tipc_config.h
tipc_netlink.h
tipc_sockets_diag.h
tipc.h
tls.h net: tls: Add tls 1.3 support 2019-02-01 15:00:55 -08:00
toshiba.h
tty_flags.h
tty.h
types.h
udf_fs_i.h
udmabuf.h Add udmabuf misc device 2018-09-03 13:29:38 +02:00
udp.h udp: implement GRO for plain UDP sockets. 2018-11-07 16:23:04 -08:00
uhid.h
uinput.h
uio.h
uleds.h
ultrasound.h
un.h
unistd.h
unix_diag.h
usbdevice_fs.h
usbip.h
userfaultfd.h
userio.h
utime.h
utsname.h
uuid.h
uvcvideo.h media: uvcvideo: Send a control event when a Control Change interrupt arrives 2018-07-27 06:39:57 -04:00
v4l2-common.h media: v4l2-common.h: put backwards compat defines under #ifndef __KERNEL__ 2018-11-20 13:22:40 -05:00
v4l2-controls.h media: mpeg2-ctrls.h: move MPEG2 state controls to non-public header 2018-12-05 13:06:31 -05:00
v4l2-dv-timings.h
v4l2-mediabus.h
v4l2-subdev.h
vbox_err.h
vbox_vmmdev_types.h
vboxguest.h
veth.h
vfio_ccw.h
vfio.h vfio_pci: Add NVIDIA GV100GL [Tesla V100 SXM2] subdriver 2018-12-21 16:20:47 +11:00
vhost_types.h vhost: split structs into a separate header file 2018-12-19 18:23:49 -05:00
vhost.h vhost: split structs into a separate header file 2018-12-19 18:23:49 -05:00
videodev2.h media fixes for v4.20-rc8 2018-12-25 13:11:30 -08:00
virtio_9p.h
virtio_balloon.h virtio-balloon: VIRTIO_BALLOON_F_PAGE_POISON 2018-10-24 20:57:55 -04:00
virtio_blk.h virtio_blk: add discard and write zeroes support 2018-12-19 18:23:49 -05:00
virtio_config.h virtio: support VIRTIO_F_ORDER_PLATFORM 2019-01-24 10:15:42 -05:00
virtio_console.h
virtio_crypto.h
virtio_gpu.h virtio-gpu: add VIRTIO_GPU_F_EDID feature 2018-11-21 12:06:59 +01:00
virtio_ids.h
virtio_input.h
virtio_mmio.h
virtio_net.h
virtio_pci.h
virtio_ring.h virtio: drop internal struct from UAPI 2019-02-05 15:29:48 -05:00
virtio_rng.h
virtio_scsi.h
virtio_types.h
virtio_vsock.h
vm_sockets_diag.h
vm_sockets.h
vmcore.h
vsockmon.h
vt.h
vtpm_proxy.h
wait.h
wanrouter.h
watchdog.h
wimax.h
wireless.h
wmi.h
x25.h
xattr.h
xdp_diag.h xsk: add sock_diag interface for AF_XDP 2019-01-25 01:50:03 +01:00
xfrm.h
xilinx-v4l2-controls.h
zorro_ids.h
zorro.h