diff options
| -rw-r--r-- | arch/mips/kernel/linux32.c | 69 | ||||
| -rw-r--r-- | arch/mips/kernel/scall64-o32.S | 2 | ||||
| -rw-r--r-- | arch/powerpc/kernel/sys_ppc32.c | 67 | ||||
| -rw-r--r-- | arch/s390/kernel/compat_linux.c | 44 | ||||
| -rw-r--r-- | arch/s390/kernel/compat_linux.h | 1 | ||||
| -rw-r--r-- | arch/s390/kernel/compat_wrapper.S | 8 | ||||
| -rw-r--r-- | arch/s390/kernel/syscalls.S | 2 | ||||
| -rw-r--r-- | arch/sparc/kernel/sys_sparc32.c | 65 | ||||
| -rw-r--r-- | arch/x86/ia32/Makefile | 3 | ||||
| -rw-r--r-- | arch/x86/ia32/ipc32.c | 54 | ||||
| -rw-r--r-- | arch/x86/include/asm/sys_ia32.h | 3 | ||||
| -rw-r--r-- | arch/x86/syscalls/syscall_32.tbl | 2 | ||||
| -rw-r--r-- | include/linux/compat.h | 1 | ||||
| -rw-r--r-- | ipc/compat.c | 44 | ||||
| -rw-r--r-- | kernel/sys_ni.c | 2 |
15 files changed, 52 insertions, 315 deletions
diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c index 6852d4876f82..7c57b8d7b255 100644 --- a/arch/mips/kernel/linux32.c +++ b/arch/mips/kernel/linux32.c | |||
| @@ -119,75 +119,6 @@ SYSCALL_DEFINE6(32_pwrite, unsigned int, fd, const char __user *, buf, | |||
| 119 | return sys_pwrite64(fd, buf, count, merge_64(a4, a5)); | 119 | return sys_pwrite64(fd, buf, count, merge_64(a4, a5)); |
| 120 | } | 120 | } |
| 121 | 121 | ||
| 122 | #ifdef CONFIG_SYSVIPC | ||
| 123 | |||
| 124 | SYSCALL_DEFINE6(32_ipc, u32, call, long, first, long, second, long, third, | ||
| 125 | unsigned long, ptr, unsigned long, fifth) | ||
| 126 | { | ||
| 127 | int version, err; | ||
| 128 | |||
| 129 | version = call >> 16; /* hack for backward compatibility */ | ||
| 130 | call &= 0xffff; | ||
| 131 | |||
| 132 | switch (call) { | ||
| 133 | case SEMOP: | ||
| 134 | /* struct sembuf is the same on 32 and 64bit :)) */ | ||
| 135 | err = sys_semtimedop(first, compat_ptr(ptr), second, NULL); | ||
| 136 | break; | ||
| 137 | case SEMTIMEDOP: | ||
| 138 | err = compat_sys_semtimedop(first, compat_ptr(ptr), second, | ||
| 139 | compat_ptr(fifth)); | ||
| 140 | break; | ||
| 141 | case SEMGET: | ||
| 142 | err = sys_semget(first, second, third); | ||
| 143 | break; | ||
| 144 | case SEMCTL: | ||
| 145 | err = compat_sys_semctl(first, second, third, compat_ptr(ptr)); | ||
| 146 | break; | ||
| 147 | case MSGSND: | ||
| 148 | err = compat_sys_msgsnd(first, second, third, compat_ptr(ptr)); | ||
| 149 | break; | ||
| 150 | case MSGRCV: | ||
| 151 | err = compat_sys_msgrcv(first, second, fifth, third, | ||
| 152 | version, compat_ptr(ptr)); | ||
| 153 | break; | ||
| 154 | case MSGGET: | ||
| 155 | err = sys_msgget((key_t) first, second); | ||
| 156 | break; | ||
| 157 | case MSGCTL: | ||
| 158 | err = compat_sys_msgctl(first, second, compat_ptr(ptr)); | ||
| 159 | break; | ||
| 160 | case SHMAT: | ||
| 161 | err = compat_sys_shmat(first, second, third, version, | ||
| 162 | compat_ptr(ptr)); | ||
| 163 | break; | ||
| 164 | case SHMDT: | ||
| 165 | err = sys_shmdt(compat_ptr(ptr)); | ||
| 166 | break; | ||
| 167 | case SHMGET: | ||
| 168 | err = sys_shmget(first, (unsigned)second, third); | ||
| 169 | break; | ||
| 170 | case SHMCTL: | ||
| 171 | err = compat_sys_shmctl(first, second, compat_ptr(ptr)); | ||
| 172 | break; | ||
| 173 | default: | ||
| 174 | err = -EINVAL; | ||
| 175 | break; | ||
| 176 | } | ||
| 177 | |||
| 178 | return err; | ||
| 179 | } | ||
| 180 | |||
| 181 | #else | ||
| 182 | |||
| 183 | SYSCALL_DEFINE6(32_ipc, u32, call, int, first, int, second, int, third, | ||
| 184 | u32, ptr, u32, fifth) | ||
| 185 | { | ||
| 186 | return -ENOSYS; | ||
| 187 | } | ||
| 188 | |||
| 189 | #endif /* CONFIG_SYSVIPC */ | ||
| 190 | |||
| 191 | #ifdef CONFIG_MIPS32_N32 | 122 | #ifdef CONFIG_MIPS32_N32 |
| 192 | SYSCALL_DEFINE4(n32_semctl, int, semid, int, semnum, int, cmd, u32, arg) | 123 | SYSCALL_DEFINE4(n32_semctl, int, semid, int, semnum, int, cmd, u32, arg) |
| 193 | { | 124 | { |
diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S index 91c8c6ea7b09..103bfe570fe8 100644 --- a/arch/mips/kernel/scall64-o32.S +++ b/arch/mips/kernel/scall64-o32.S | |||
| @@ -309,7 +309,7 @@ sys_call_table: | |||
| 309 | PTR compat_sys_wait4 | 309 | PTR compat_sys_wait4 |
| 310 | PTR sys_swapoff /* 4115 */ | 310 | PTR sys_swapoff /* 4115 */ |
| 311 | PTR compat_sys_sysinfo | 311 | PTR compat_sys_sysinfo |
| 312 | PTR sys_32_ipc | 312 | PTR compat_sys_ipc |
| 313 | PTR sys_fsync | 313 | PTR sys_fsync |
| 314 | PTR sys32_sigreturn | 314 | PTR sys32_sigreturn |
| 315 | PTR __sys_clone /* 4120 */ | 315 | PTR __sys_clone /* 4120 */ |
diff --git a/arch/powerpc/kernel/sys_ppc32.c b/arch/powerpc/kernel/sys_ppc32.c index e695230ca181..d78ad7b6c464 100644 --- a/arch/powerpc/kernel/sys_ppc32.c +++ b/arch/powerpc/kernel/sys_ppc32.c | |||
| @@ -61,73 +61,6 @@ asmlinkage long ppc32_select(u32 n, compat_ulong_t __user *inp, | |||
| 61 | return compat_sys_select((int)n, inp, outp, exp, compat_ptr(tvp_x)); | 61 | return compat_sys_select((int)n, inp, outp, exp, compat_ptr(tvp_x)); |
| 62 | } | 62 | } |
| 63 | 63 | ||
| 64 | #ifdef CONFIG_SYSVIPC | ||
| 65 | long compat_sys_ipc(u32 call, u32 first, u32 second, u32 third, compat_uptr_t ptr, | ||
| 66 | u32 fifth) | ||
| 67 | { | ||
| 68 | int version; | ||
| 69 | |||
| 70 | version = call >> 16; /* hack for backward compatibility */ | ||
| 71 | call &= 0xffff; | ||
| 72 | |||
| 73 | switch (call) { | ||
| 74 | |||
| 75 | case SEMTIMEDOP: | ||
| 76 | if (fifth) | ||
| 77 | /* sign extend semid */ | ||
| 78 | return compat_sys_semtimedop((int)first, | ||
| 79 | compat_ptr(ptr), second, | ||
| 80 | compat_ptr(fifth)); | ||
| 81 | /* else fall through for normal semop() */ | ||
| 82 | case SEMOP: | ||
| 83 | /* struct sembuf is the same on 32 and 64bit :)) */ | ||
| 84 | /* sign extend semid */ | ||
| 85 | return sys_semtimedop((int)first, compat_ptr(ptr), second, | ||
| 86 | NULL); | ||
| 87 | case SEMGET: | ||
| 88 | /* sign extend key, nsems */ | ||
| 89 | return sys_semget((int)first, (int)second, third); | ||
| 90 | case SEMCTL: | ||
| 91 | /* sign extend semid, semnum */ | ||
| 92 | return compat_sys_semctl((int)first, (int)second, third, | ||
| 93 | compat_ptr(ptr)); | ||
| 94 | |||
| 95 | case MSGSND: | ||
| 96 | /* sign extend msqid */ | ||
| 97 | return compat_sys_msgsnd((int)first, (int)second, third, | ||
| 98 | compat_ptr(ptr)); | ||
| 99 | case MSGRCV: | ||
| 100 | /* sign extend msqid, msgtyp */ | ||
| 101 | return compat_sys_msgrcv((int)first, second, (int)fifth, | ||
| 102 | third, version, compat_ptr(ptr)); | ||
| 103 | case MSGGET: | ||
| 104 | /* sign extend key */ | ||
| 105 | return sys_msgget((int)first, second); | ||
| 106 | case MSGCTL: | ||
| 107 | /* sign extend msqid */ | ||
| 108 | return compat_sys_msgctl((int)first, second, compat_ptr(ptr)); | ||
| 109 | |||
| 110 | case SHMAT: | ||
| 111 | /* sign extend shmid */ | ||
| 112 | return compat_sys_shmat((int)first, second, third, version, | ||
| 113 | compat_ptr(ptr)); | ||
| 114 | case SHMDT: | ||
| 115 | return sys_shmdt(compat_ptr(ptr)); | ||
| 116 | case SHMGET: | ||
| 117 | /* sign extend key_t */ | ||
| 118 | return sys_shmget((int)first, second, third); | ||
| 119 | case SHMCTL: | ||
| 120 | /* sign extend shmid */ | ||
| 121 | return compat_sys_shmctl((int)first, second, compat_ptr(ptr)); | ||
| 122 | |||
| 123 | default: | ||
| 124 | return -ENOSYS; | ||
| 125 | } | ||
| 126 | |||
| 127 | return -ENOSYS; | ||
| 128 | } | ||
| 129 | #endif | ||
| 130 | |||
| 131 | unsigned long compat_sys_mmap2(unsigned long addr, size_t len, | 64 | unsigned long compat_sys_mmap2(unsigned long addr, size_t len, |
| 132 | unsigned long prot, unsigned long flags, | 65 | unsigned long prot, unsigned long flags, |
| 133 | unsigned long fd, unsigned long pgoff) | 66 | unsigned long fd, unsigned long pgoff) |
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c index fbd29c70a297..8b6e4f5288a2 100644 --- a/arch/s390/kernel/compat_linux.c +++ b/arch/s390/kernel/compat_linux.c | |||
| @@ -288,51 +288,13 @@ asmlinkage long sys32_getegid16(void) | |||
| 288 | return high2lowgid(from_kgid_munged(current_user_ns(), current_egid())); | 288 | return high2lowgid(from_kgid_munged(current_user_ns(), current_egid())); |
| 289 | } | 289 | |
