svn commit: r283428 - in head/sys: amd64/linux amd64/linux32 compat/linux i386/linux
Dmitry Chagin
dchagin at FreeBSD.org
Sun May 24 16:18:05 UTC 2015
Author: dchagin
Date: Sun May 24 16:18:03 2015
New Revision: 283428
URL: https://svnweb.freebsd.org/changeset/base/283428
Log:
Change linux faccessat syscall definition to match actual linux one.
The AT_EACCESS and AT_SYMLINK_NOFOLLOW flags are actually implemented
within the glibc wrapper function for faccessat(). If either of these
flags are specified, then the wrapper function employs fstatat() to
determine access permissions.
Differential Revision: https://reviews.freebsd.org/D1078
Reviewed by: trasz
Modified:
head/sys/amd64/linux/syscalls.master
head/sys/amd64/linux32/syscalls.master
head/sys/compat/linux/linux_file.c
head/sys/i386/linux/syscalls.master
Modified: head/sys/amd64/linux/syscalls.master
==============================================================================
--- head/sys/amd64/linux/syscalls.master Sun May 24 16:14:41 2015 (r283427)
+++ head/sys/amd64/linux/syscalls.master Sun May 24 16:18:03 2015 (r283428)
@@ -450,7 +450,7 @@
268 AUE_FCHMODAT STD { int linux_fchmodat(l_int dfd, const char *filename, \
l_mode_t mode); }
269 AUE_FACCESSAT STD { int linux_faccessat(l_int dfd, const char *filename, \
- l_int amode, l_int flag); }
+ l_int amode); }
270 AUE_SELECT STD { int linux_pselect6(l_int nfds, \
l_fd_set *readfds, l_fd_set *writefds, l_fd_set *exceptfds, \
struct l_timespec *tsp, l_uintptr_t *sig); }
Modified: head/sys/amd64/linux32/syscalls.master
==============================================================================
--- head/sys/amd64/linux32/syscalls.master Sun May 24 16:14:41 2015 (r283427)
+++ head/sys/amd64/linux32/syscalls.master Sun May 24 16:18:03 2015 (r283428)
@@ -507,7 +507,8 @@
char *buf, l_int bufsiz); }
306 AUE_FCHMODAT STD { int linux_fchmodat(l_int dfd, const char *filename, \
l_mode_t mode); }
-307 AUE_FACCESSAT STD { int linux_faccessat(l_int dfd, const char *filename, l_int amode, int flag); }
+307 AUE_FACCESSAT STD { int linux_faccessat(l_int dfd, const char *filename, \
+ l_int amode); }
308 AUE_SELECT STD { int linux_pselect6(l_int nfds, l_fd_set *readfds, \
l_fd_set *writefds, l_fd_set *exceptfds, \
struct l_timespec *tsp, l_uintptr_t *sig); }
Modified: head/sys/compat/linux/linux_file.c
==============================================================================
--- head/sys/compat/linux/linux_file.c Sun May 24 16:14:41 2015 (r283427)
+++ head/sys/compat/linux/linux_file.c Sun May 24 16:18:03 2015 (r283428)
@@ -581,10 +581,8 @@ int
linux_faccessat(struct thread *td, struct linux_faccessat_args *args)
{
char *path;
- int error, dfd, flag;
+ int error, dfd;
- if (args->flag & ~LINUX_AT_EACCESS)
- return (EINVAL);
/* linux convention */
if (args->amode & ~(F_OK | X_OK | W_OK | R_OK))
return (EINVAL);
@@ -597,8 +595,7 @@ linux_faccessat(struct thread *td, struc
printf(ARGS(access, "%s, %d"), path, args->amode);
#endif
- flag = (args->flag & LINUX_AT_EACCESS) == 0 ? 0 : AT_EACCESS;
- error = kern_accessat(td, dfd, path, UIO_SYSSPACE, flag, args->amode);
+ error = kern_accessat(td, dfd, path, UIO_SYSSPACE, 0, args->amode);
LFREEPATH(path);
return (error);
Modified: head/sys/i386/linux/syscalls.master
==============================================================================
--- head/sys/i386/linux/syscalls.master Sun May 24 16:14:41 2015 (r283427)
+++ head/sys/i386/linux/syscalls.master Sun May 24 16:18:03 2015 (r283428)
@@ -515,7 +515,8 @@
char *buf, l_int bufsiz); }
306 AUE_FCHMODAT STD { int linux_fchmodat(l_int dfd, const char *filename, \
l_mode_t mode); }
-307 AUE_FACCESSAT STD { int linux_faccessat(l_int dfd, const char *filename, l_int amode, l_int flag); }
+307 AUE_FACCESSAT STD { int linux_faccessat(l_int dfd, const char *filename, \
+ l_int amode); }
308 AUE_SELECT STD { int linux_pselect6(l_int nfds, l_fd_set *readfds, \
l_fd_set *writefds, l_fd_set *exceptfds, \
struct l_timespec *tsp, l_uintptr_t *sig); }
More information about the svn-src-head
mailing list