mirror of
https://github.com/team-infusion-developers/android_kernel_samsung_msm8976.git
synced 2024-11-07 04:09:21 +00:00
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: Heiko Carstens <heiko.carstens@de.ibm.com> Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git Git-commit: 0473c9b5f05948df780bbc7b996dd7aefc4ec41d Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
This commit is contained in:
parent
9a2a75516a
commit
e89d22ffdc
6 changed files with 7 additions and 3 deletions
|
@ -14,6 +14,7 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifdef CONFIG_COMPAT
|
||||
#define __ARCH_WANT_COMPAT_SYS_GETDENTS64
|
||||
#define __ARCH_WANT_COMPAT_STAT64
|
||||
#define __ARCH_WANT_SYS_GETHOSTNAME
|
||||
#define __ARCH_WANT_SYS_PAUSE
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#define __ARCH_OMIT_COMPAT_SYS_GETDENTS64
|
||||
#define __ARCH_WANT_OLD_READDIR
|
||||
#define __ARCH_WANT_SYS_ALARM
|
||||
#define __ARCH_WANT_SYS_GETHOSTNAME
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
# include <asm/unistd_64.h>
|
||||
# include <asm/unistd_64_x32.h>
|
||||
# define __ARCH_WANT_COMPAT_SYS_TIME
|
||||
# define __ARCH_WANT_COMPAT_SYS_GETDENTS64
|
||||
|
||||
# endif
|
||||
|
||||
|
|
|
@ -980,7 +980,7 @@ asmlinkage long compat_sys_getdents(unsigned int fd,
|
|||
return error;
|
||||
}
|
||||
|
||||
#ifndef __ARCH_OMIT_COMPAT_SYS_GETDENTS64
|
||||
#ifdef __ARCH_WANT_COMPAT_SYS_GETDENTS64
|
||||
|
||||
struct compat_getdents_callback64 {
|
||||
struct linux_dirent64 __user *current_dir;
|
||||
|
@ -1065,7 +1065,7 @@ asmlinkage long compat_sys_getdents64(unsigned int fd,
|
|||
fdput(f);
|
||||
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
|
||||
|
|
|
@ -501,9 +501,11 @@ asmlinkage long compat_sys_old_readdir(unsigned int fd,
|
|||
asmlinkage long compat_sys_getdents(unsigned int fd,
|
||||
struct compat_linux_dirent __user *dirent,
|
||||
unsigned int count);
|
||||
#ifdef __ARCH_WANT_COMPAT_SYS_GETDENTS64
|
||||
asmlinkage long compat_sys_getdents64(unsigned int fd,
|
||||
struct linux_dirent64 __user *dirent,
|
||||
unsigned int count);
|
||||
#endif
|
||||
asmlinkage long compat_sys_vmsplice(int fd, const struct compat_iovec __user *,
|
||||
unsigned int nr_segs, unsigned int flags);
|
||||
asmlinkage long compat_sys_open(const char __user *filename, int flags,
|
||||
|
|
|
@ -191,6 +191,7 @@ __SYSCALL(__NR_quotactl, sys_quotactl)
|
|||
|
||||
/* fs/readdir.c */
|
||||
#define __NR_getdents64 61
|
||||
#define __ARCH_WANT_COMPAT_SYS_GETDENTS64
|
||||
__SC_COMP(__NR_getdents64, sys_getdents64, compat_sys_getdents64)
|
||||
|
||||
/* fs/read_write.c */
|
||||
|
|
Loading…
Reference in a new issue