linux: Add fsmount

It was added on 5.2 (93766fbd2696c2c4453dd8e1070977e9cd4e6b6d) to
provide a way by which a filesystem opened with fsopen and configured
by a series of fsconfig calls can have a detached mount object
created for it.

Tested-by: Carlos O'Donell <carlos@redhat.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
This commit is contained in:
Adhemerval Zanella 2022-01-31 09:46:24 -03:00
parent 6c0eedd97e
commit b4deb7beb8
38 changed files with 63 additions and 5 deletions

8
NEWS
View File

@ -41,10 +41,10 @@ Major new features:
have adverse impact. It is incompatible with EDNS0 usage and DNSSEC
validation by applications.
* On Linux, the fsopen function has been added. It is part of the new Linux
kernel mount APIs that allow applications to more flexibly configure and
operate on filesystem mounts. The new mount APIs are specifically designed
to work with namespaces.
* On Linux, the fsopen and fsmount functions have been added. They are part
of the new Linux kernel mount APIs that allow applications to more flexibly
configure and operate on filesystem mounts. The new mount APIs are
specifically designed to work with namespaces.
Deprecated and removed features, and other changes affecting compatibility:

View File

@ -300,6 +300,7 @@ libc {
epoll_pwait2;
}
GLIBC_2.36 {
fsmount;
fsopen;
pidfd_open;
pidfd_getfd;

View File

@ -2616,6 +2616,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2713,6 +2713,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2377,6 +2377,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -496,6 +496,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -493,6 +493,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2652,6 +2652,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2601,6 +2601,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2785,6 +2785,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2551,6 +2551,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -497,6 +497,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2728,6 +2728,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2701,6 +2701,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2698,6 +2698,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2693,6 +2693,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2691,6 +2691,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2699,6 +2699,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2602,6 +2602,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2740,6 +2740,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2123,6 +2123,7 @@ GLIBC_2.35 wprintf F
GLIBC_2.35 write F
GLIBC_2.35 writev F
GLIBC_2.35 wscanf F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2755,6 +2755,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2788,6 +2788,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2510,6 +2510,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2812,6 +2812,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2379,6 +2379,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2579,6 +2579,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2753,6 +2753,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2547,6 +2547,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2608,6 +2608,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2605,6 +2605,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2748,6 +2748,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2574,6 +2574,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -137,6 +137,22 @@ enum
/* fsopen flags. */
#define FSOPEN_CLOEXEC 0x00000001
/* fsmount flags. */
#define FSMOUNT_CLOEXEC 0x00000001
/* mount attributes used on fsmount. */
#define MOUNT_ATTR_RDONLY 0x00000001 /* Mount read-only. */
#define MOUNT_ATTR_NOSUID 0x00000002 /* Ignore suid and sgid bits. */
#define MOUNT_ATTR_NODEV 0x00000004 /* Disallow access to device special files. */
#define MOUNT_ATTR_NOEXEC 0x00000008 /* Disallow program execution. */
#define MOUNT_ATTR__ATIME 0x00000070 /* Setting on how atime should be updated. */
#define MOUNT_ATTR_RELATIME 0x00000000 /* - Update atime relative to mtime/ctime. */
#define MOUNT_ATTR_NOATIME 0x00000010 /* - Do not update access times. */
#define MOUNT_ATTR_STRICTATIME 0x00000020 /* - Always perform atime updates */
#define MOUNT_ATTR_NODIRATIME 0x00000080 /* Do not update directory access times. */
#define MOUNT_ATTR_IDMAP 0x00100000 /* Idmap mount to @userns_fd in struct mount_attr. */
#define MOUNT_ATTR_NOSYMFOLLOW 0x00200000 /* Do not follow symlinks. */
__BEGIN_DECLS
@ -155,6 +171,11 @@ extern int umount2 (const char *__special_file, int __flags) __THROW;
mouting. */
extern int fsopen (const char *__fs_name, unsigned int __flags) __THROW;
/* Create a mount representation for the FD created by fsopen using
FLAGS with ATTR_FLAGS describing how the mount is to be performed. */
extern int fsmount (int __fd, unsigned int __flags,
unsigned int __ms_flags) __THROW;
__END_DECLS
#endif /* _SYS_MOUNT_H */

View File

@ -12,6 +12,7 @@ epoll_ctl EXTRA epoll_ctl i:iiip epoll_ctl
eventfd EXTRA eventfd2 i:ii eventfd
execve - execve i:spp __execve execve
flock - flock i:ii __flock flock
fsmount EXTRA fsmount i:iUU fsmount
fsopen EXTRA fsopen i:sU fsopen
get_kernel_syms EXTRA get_kernel_syms i:p __compat_get_kernel_syms get_kernel_syms@GLIBC_2.0:GLIBC_2.23
getpid - getpid Ei: __getpid getpid

View File

@ -49,7 +49,9 @@ def main():
linux_version_glibc > linux_version_headers,
linux_version_headers > linux_version_glibc)
status = check('FSOPEN_.*')
status = max(
check('FSOPEN_.*'),
check('FSMOUNT_.*'))
sys.exit(status)
if __name__ == '__main__':

View File

@ -2525,6 +2525,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F

View File

@ -2631,6 +2631,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
GLIBC_2.36 fsmount F
GLIBC_2.36 fsopen F
GLIBC_2.36 pidfd_getfd F
GLIBC_2.36 pidfd_open F