diff options
author | Joseph Myers <joseph@codesourcery.com> | 2017-09-08 16:19:21 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2017-09-08 16:19:21 +0000 |
commit | 27342d1783449fe837ac42e9b382b2868af3256f (patch) | |
tree | d87f8022a982ca350f3873dca880b70cd456cc55 | |
parent | 07b4f49db285f39594859c58893e3404b33200dd (diff) | |
download | glibc-27342d1783449fe837ac42e9b382b2868af3256f.tar.gz |
Add fcntl sealing interfaces from Linux 3.17 to bits/fcntl-linux.h.
While reviewing Linux 4.13 for glibc header changes needed, I noticed
that bits/fcntl-linux.h was missing F_ADD_SEALS etc. from Linux 3.17.
I didn't find any discussion indicating this omission is deliberate.
Now, these interfaces can only be used with file descriptors created
with memfd_create, and we don't have a memfd_create wrapper in glibc
(a patch was submitted in October 2014, albeit without documentation /
tests, and discussions continued over the next few months, but without
consensus on whether to add the interface - and we still lack any
general consensus on syscall wrappers), but I don't think that's a
reason to exclude the constants from bits/fcntl-linux.h (especially as
the header does not look compatible with simultaneously including
linux/fcntl.h).
(Some of those 2014/2015 discussions raised concerns about difficulty
using the memfd_create / sealing interface, but those seem to me more
like a question of whether it should be part of the OS-independent GNU
API - in my view, even fairly specialized syscalls ought to have
wrappers added to glibc if not obsolescent, but there may be cases
where we only want to include them in the Linux-specific API and
anything in the OS-independent GNU API should be different - rather
than being relevant to whether constants for use with fcntl should
appear in headers.)
* sysdeps/unix/sysv/linux/bits/fcntl-linux.h [__USE_GNU]
(F_ADD_SEALS): New macro.
[__USE_GNU] (F_GET_SEALS): Likewise.
[__USE_GNU] (F_SEAL_SEAL): Likewise.
[__USE_GNU] (F_SEAL_SHRINK): Likewise.
[__USE_GNU] (F_SEAL_GROW): Likewise.
[__USE_GNU] (F_SEAL_WRITE): Likewise.
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/bits/fcntl-linux.h | 10 |
2 files changed, 20 insertions, 0 deletions
@@ -1,3 +1,13 @@ +2017-09-08 Joseph Myers <joseph@codesourcery.com> + + * sysdeps/unix/sysv/linux/bits/fcntl-linux.h [__USE_GNU] + (F_ADD_SEALS): New macro. + [__USE_GNU] (F_GET_SEALS): Likewise. + [__USE_GNU] (F_SEAL_SEAL): Likewise. + [__USE_GNU] (F_SEAL_SHRINK): Likewise. + [__USE_GNU] (F_SEAL_GROW): Likewise. + [__USE_GNU] (F_SEAL_WRITE): Likewise. + 2017-09-08 Adhemerval Zanella <adhemerval.zanella@linaro.org> * posix/glob_internal.h (GLOBPAT_NONE, GLOBPAT_SPECIAL) diff --git a/sysdeps/unix/sysv/linux/bits/fcntl-linux.h b/sysdeps/unix/sysv/linux/bits/fcntl-linux.h index 0cd0a5d731..fc65fc2e4a 100644 --- a/sysdeps/unix/sysv/linux/bits/fcntl-linux.h +++ b/sysdeps/unix/sysv/linux/bits/fcntl-linux.h @@ -202,6 +202,8 @@ # define F_NOTIFY 1026 /* Request notifications on a directory. */ # define F_SETPIPE_SZ 1031 /* Set pipe page size array. */ # define F_GETPIPE_SZ 1032 /* Set pipe page size array. */ +# define F_ADD_SEALS 1033 /* Add seals to file. */ +# define F_GET_SEALS 1034 /* Get seals for file. */ #endif #ifdef __USE_XOPEN2K8 # define F_DUPFD_CLOEXEC 1030 /* Duplicate file descriptor with @@ -271,6 +273,14 @@ struct f_owner_ex }; #endif +#ifdef __USE_GNU +/* Types of seals. */ +# define F_SEAL_SEAL 0x0001 /* Prevent further seals from being set. */ +# define F_SEAL_SHRINK 0x0002 /* Prevent file from shrinking. */ +# define F_SEAL_GROW 0x0004 /* Prevent file from growing. */ +# define F_SEAL_WRITE 0x0008 /* Prevent writes. */ +#endif + /* Define some more compatibility macros to be backward compatible with BSD systems which did not managed to hide these kernel macros. */ #ifdef __USE_MISC |