vfs: add faccessat2 syscall
POSIX defines faccessat() as having a fourth "flags" argument, while the
linux syscall doesn't have it. Glibc tries to emulate AT_EACCESS and
AT_SYMLINK_NOFOLLOW, but AT_EACCESS emulation is broken.
Add a new faccessat(2) syscall with the added flags argument and implement
both flags.
The value of AT_EACCESS is defined in glibc headers to be the same as
AT_REMOVEDIR. Use this value for the kernel interface as well, together
with the explanatory comment.
Also add AT_EMPTY_PATH support, which is not documented by POSIX, but can
be useful and is trivial to implement.
Signed-off-by:
Miklos Szeredi <mszeredi@redhat.com>
Showing
- arch/alpha/kernel/syscalls/syscall.tbl 1 addition, 0 deletionsarch/alpha/kernel/syscalls/syscall.tbl
- arch/arm/tools/syscall.tbl 1 addition, 0 deletionsarch/arm/tools/syscall.tbl
- arch/arm64/include/asm/unistd.h 1 addition, 1 deletionarch/arm64/include/asm/unistd.h
- arch/arm64/include/asm/unistd32.h 2 additions, 0 deletionsarch/arm64/include/asm/unistd32.h
- arch/ia64/kernel/syscalls/syscall.tbl 1 addition, 0 deletionsarch/ia64/kernel/syscalls/syscall.tbl
- arch/m68k/kernel/syscalls/syscall.tbl 1 addition, 0 deletionsarch/m68k/kernel/syscalls/syscall.tbl
- arch/microblaze/kernel/syscalls/syscall.tbl 1 addition, 0 deletionsarch/microblaze/kernel/syscalls/syscall.tbl
- arch/mips/kernel/syscalls/syscall_n32.tbl 1 addition, 0 deletionsarch/mips/kernel/syscalls/syscall_n32.tbl
- arch/mips/kernel/syscalls/syscall_n64.tbl 1 addition, 0 deletionsarch/mips/kernel/syscalls/syscall_n64.tbl
- arch/mips/kernel/syscalls/syscall_o32.tbl 1 addition, 0 deletionsarch/mips/kernel/syscalls/syscall_o32.tbl
- arch/parisc/kernel/syscalls/syscall.tbl 1 addition, 0 deletionsarch/parisc/kernel/syscalls/syscall.tbl
- arch/powerpc/kernel/syscalls/syscall.tbl 1 addition, 0 deletionsarch/powerpc/kernel/syscalls/syscall.tbl
- arch/s390/kernel/syscalls/syscall.tbl 1 addition, 0 deletionsarch/s390/kernel/syscalls/syscall.tbl
- arch/sh/kernel/syscalls/syscall.tbl 1 addition, 0 deletionsarch/sh/kernel/syscalls/syscall.tbl
- arch/sparc/kernel/syscalls/syscall.tbl 1 addition, 0 deletionsarch/sparc/kernel/syscalls/syscall.tbl
- arch/x86/entry/syscalls/syscall_32.tbl 1 addition, 0 deletionsarch/x86/entry/syscalls/syscall_32.tbl
- arch/x86/entry/syscalls/syscall_64.tbl 1 addition, 0 deletionsarch/x86/entry/syscalls/syscall_64.tbl
- arch/xtensa/kernel/syscalls/syscall.tbl 1 addition, 0 deletionsarch/xtensa/kernel/syscalls/syscall.tbl
- fs/internal.h 0 additions, 1 deletionfs/internal.h
- fs/open.c 26 additions, 8 deletionsfs/open.c
Loading
Please register or sign in to comment