Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 May 2015 16:18:03 +0000 (UTC)
From:      Dmitry Chagin <dchagin@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r283428 - in head/sys: amd64/linux amd64/linux32 compat/linux i386/linux
Message-ID:  <201505241618.t4OGI3PT079296@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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); }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201505241618.t4OGI3PT079296>