Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0473c9b5 authored by Heiko Carstens's avatar Heiko Carstens
Browse files

compat: let architectures define __ARCH_WANT_COMPAT_SYS_GETDENTS64



For architecture dependent compat syscalls in common code an architecture
must define something like __ARCH_WANT_<WHATEVER> if it wants to use the
code.
This however is not true for compat_sys_getdents64 for which architectures
must define __ARCH_OMIT_COMPAT_SYS_GETDENTS64 if they do not want the code.

This leads to the situation where all architectures, except mips, get the
compat code but only x86_64, arm64 and the generic syscall architectures
actually use it.

So invert the logic, so that architectures actively must do something to
get the compat code.

This way a couple of architectures get rid of otherwise dead code.

Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
parent 0414855f
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -14,6 +14,7 @@
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 */
#ifdef CONFIG_COMPAT
#ifdef CONFIG_COMPAT
#define __ARCH_WANT_COMPAT_SYS_GETDENTS64
#define __ARCH_WANT_COMPAT_STAT64
#define __ARCH_WANT_COMPAT_STAT64
#define __ARCH_WANT_SYS_GETHOSTNAME
#define __ARCH_WANT_SYS_GETHOSTNAME
#define __ARCH_WANT_SYS_PAUSE
#define __ARCH_WANT_SYS_PAUSE
+0 −1
Original line number Original line Diff line number Diff line
@@ -24,7 +24,6 @@


#ifndef __ASSEMBLY__
#ifndef __ASSEMBLY__


#define __ARCH_OMIT_COMPAT_SYS_GETDENTS64
#define __ARCH_WANT_OLD_READDIR
#define __ARCH_WANT_OLD_READDIR
#define __ARCH_WANT_SYS_ALARM
#define __ARCH_WANT_SYS_ALARM
#define __ARCH_WANT_SYS_GETHOSTNAME
#define __ARCH_WANT_SYS_GETHOSTNAME
+1 −0
Original line number Original line Diff line number Diff line
@@ -23,6 +23,7 @@
#  include <asm/unistd_64.h>
#  include <asm/unistd_64.h>
#  include <asm/unistd_64_x32.h>
#  include <asm/unistd_64_x32.h>
#  define __ARCH_WANT_COMPAT_SYS_TIME
#  define __ARCH_WANT_COMPAT_SYS_TIME
#  define __ARCH_WANT_COMPAT_SYS_GETDENTS64


# endif
# endif


+2 −2
Original line number Original line Diff line number Diff line
@@ -981,7 +981,7 @@ asmlinkage long compat_sys_getdents(unsigned int fd,
	return error;
	return error;
}
}


#ifndef __ARCH_OMIT_COMPAT_SYS_GETDENTS64
#ifdef __ARCH_WANT_COMPAT_SYS_GETDENTS64


struct compat_getdents_callback64 {
struct compat_getdents_callback64 {
	struct dir_context ctx;
	struct dir_context ctx;
@@ -1066,7 +1066,7 @@ asmlinkage long compat_sys_getdents64(unsigned int fd,
	fdput(f);
	fdput(f);
	return error;
	return error;
}
}
#endif /* ! __ARCH_OMIT_COMPAT_SYS_GETDENTS64 */
#endif /* __ARCH_WANT_COMPAT_SYS_GETDENTS64 */


/*
/*
 * Exactly like fs/open.c:sys_open(), except that it doesn't set the
 * Exactly like fs/open.c:sys_open(), except that it doesn't set the
+2 −0
Original line number Original line Diff line number Diff line
@@ -502,9 +502,11 @@ asmlinkage long compat_sys_old_readdir(unsigned int fd,
asmlinkage long compat_sys_getdents(unsigned int fd,
asmlinkage long compat_sys_getdents(unsigned int fd,
				    struct compat_linux_dirent __user *dirent,
				    struct compat_linux_dirent __user *dirent,
				    unsigned int count);
				    unsigned int count);
#ifdef __ARCH_WANT_COMPAT_SYS_GETDENTS64
asmlinkage long compat_sys_getdents64(unsigned int fd,
asmlinkage long compat_sys_getdents64(unsigned int fd,
				      struct linux_dirent64 __user *dirent,
				      struct linux_dirent64 __user *dirent,
				      unsigned int count);
				      unsigned int count);
#endif
asmlinkage long compat_sys_vmsplice(int fd, const struct compat_iovec __user *,
asmlinkage long compat_sys_vmsplice(int fd, const struct compat_iovec __user *,
				    unsigned int nr_segs, unsigned int flags);
				    unsigned int nr_segs, unsigned int flags);
asmlinkage long compat_sys_open(const char __user *filename, int flags,
asmlinkage long compat_sys_open(const char __user *filename, int flags,
Loading