diff options
author | Al Viro <viro@ftp.linux.org.uk> | 2006-01-12 04:06:27 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-01-12 12:09:03 -0500 |
commit | 350c20a6fd24b2a3265f7ca440aa17570e89e2cd (patch) | |
tree | 3e10994ff5c6c8f31db2a71b71099c409235bc18 /arch | |
parent | 1b7bb54a417ca73eefc52df3702ff5167b46dc89 (diff) |
[PATCH] m68k: syscalls __user annotation
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Cc: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/m68k/kernel/sys_m68k.c | 39 |
1 files changed, 16 insertions, 23 deletions
diff --git a/arch/m68k/kernel/sys_m68k.c b/arch/m68k/kernel/sys_m68k.c index 640895b2c51a..143c552d38f3 100644 --- a/arch/m68k/kernel/sys_m68k.c +++ b/arch/m68k/kernel/sys_m68k.c | |||
@@ -32,7 +32,7 @@ | |||
32 | * sys_pipe() is the normal C calling standard for creating | 32 | * sys_pipe() is the normal C calling standard for creating |
33 | * a pipe. It's not the way unix traditionally does this, though. | 33 | * a pipe. It's not the way unix traditionally does this, though. |
34 | */ | 34 | */ |
35 | asmlinkage int sys_pipe(unsigned long * fildes) | 35 | asmlinkage int sys_pipe(unsigned long __user * fildes) |
36 | { | 36 | { |
37 | int fd[2]; | 37 | int fd[2]; |
38 | int error; | 38 | int error; |
@@ -94,7 +94,7 @@ struct mmap_arg_struct { | |||
94 | unsigned long offset; | 94 | unsigned long offset; |
95 | }; | 95 | }; |
96 | 96 | ||
97 | asmlinkage int old_mmap(struct mmap_arg_struct *arg) | 97 | asmlinkage int old_mmap(struct mmap_arg_struct __user *arg) |
98 | { | 98 | { |
99 | struct mmap_arg_struct a; | 99 | struct mmap_arg_struct a; |
100 | int error = -EFAULT; | 100 | int error = -EFAULT; |
@@ -160,11 +160,11 @@ out: | |||
160 | 160 | ||
161 | struct sel_arg_struct { | 161 | struct sel_arg_struct { |
162 | unsigned long n; | 162 | unsigned long n; |
163 | fd_set *inp, *outp, *exp; | 163 | fd_set __user *inp, *outp, *exp; |
164 | struct timeval *tvp; | 164 | struct timeval __user *tvp; |
165 | }; | 165 | }; |
166 | 166 | ||
167 | asmlinkage int old_select(struct sel_arg_struct *arg) | 167 | asmlinkage int old_select(struct sel_arg_struct __user *arg) |
168 | { | 168 | { |
169 | struct sel_arg_struct a; | 169 | struct sel_arg_struct a; |
170 | 170 | ||
@@ -180,7 +180,7 @@ asmlinkage int old_select(struct sel_arg_struct *arg) | |||
180 | * This is really horribly ugly. | 180 | * This is really horribly ugly. |
181 | */ | 181 | */ |
182 | asmlinkage int sys_ipc (uint call, int first, int second, | 182 | asmlinkage int sys_ipc (uint call, int first, int second, |
183 | int third, void *ptr, long fifth) | 183 | int third, void __user *ptr, long fifth) |
184 | { | 184 | { |
185 | int version, ret; | 185 | int version, ret; |
186 | 186 | ||
@@ -190,14 +190,14 @@ asmlinkage int sys_ipc (uint call, int first, int second, | |||
190 | if (call <= SEMCTL) | 190 | if (call <= SEMCTL) |
191 | switch (call) { | 191 | switch (call) { |
192 | case SEMOP: | 192 | case SEMOP: |
193 | return sys_semop (first, (struct sembuf *)ptr, second); | 193 | return sys_semop (first, ptr, second); |
194 | case SEMGET: | 194 | case SEMGET: |
195 | return sys_semget (first, second, third); | 195 | return sys_semget (first, second, third); |
196 | case SEMCTL: { | 196 | case SEMCTL: { |
197 | union semun fourth; | 197 | union semun fourth; |
198 | if (!ptr) | 198 | if (!ptr) |
199 | return -EINVAL; | 199 | return -EINVAL; |
200 | if (get_user(fourth.__pad, (void **) ptr)) | 200 | if (get_user(fourth.__pad, (void __user *__user *) ptr)) |
201 | return -EFAULT; | 201 | return -EFAULT; |
202 | return sys_semctl (first, second, third, fourth); | 202 | return sys_semctl (first, second, third, fourth); |
203 | } | 203 | } |
@@ -207,31 +207,26 @@ asmlinkage int sys_ipc (uint call, int first, int second, | |||
207 | if (call <= MSGCTL) | 207 | if (call <= MSGCTL) |
208 | switch (call) { | 208 | switch (call) { |
209 | case MSGSND: | 209 | case MSGSND: |
210 | return sys_msgsnd (first, (struct msgbuf *) ptr, | 210 | return sys_msgsnd (first, ptr, second, third); |
211 | second, third); | ||
212 | case MSGRCV: | 211 | case MSGRCV: |
213 | switch (version) { | 212 | switch (version) { |
214 | case 0: { | 213 | case 0: { |
215 | struct ipc_kludge tmp; | 214 | struct ipc_kludge tmp; |
216 | if (!ptr) | 215 | if (!ptr) |
217 | return -EINVAL; | 216 | return -EINVAL; |
218 | if (copy_from_user (&tmp, | 217 | if (copy_from_user (&tmp, ptr, sizeof (tmp))) |
219 | (struct ipc_kludge *)ptr, | ||
220 | sizeof (tmp))) | ||
221 | return -EFAULT; | 218 | return -EFAULT; |
222 | return sys_msgrcv (first, tmp.msgp, second, | 219 | return sys_msgrcv (first, tmp.msgp, second, |
223 | tmp.msgtyp, third); | 220 | tmp.msgtyp, third); |
224 | } | 221 | } |
225 | default: | 222 | default: |
226 | return sys_msgrcv (first, | 223 | return sys_msgrcv (first, ptr, |
227 | (struct msgbuf *) ptr, | ||
228 | second, fifth, third); | 224 | second, fifth, third); |
229 | } | 225 | } |
230 | case MSGGET: | 226 | case MSGGET: |
231 | return sys_msgget ((key_t) first, second); | 227 | return sys_msgget ((key_t) first, second); |
232 | case MSGCTL: | 228 | case MSGCTL: |
233 | return sys_msgctl (first, second, | 229 | return sys_msgctl (first, second, ptr); |
234 | (struct msqid_ds *) ptr); | ||
235 | default: | 230 | default: |
236 | return -ENOSYS; | 231 | return -ENOSYS; |
237 | } | 232 | } |
@@ -241,20 +236,18 @@ asmlinkage int sys_ipc (uint call, int first, int second, | |||
241 | switch (version) { | 236 | switch (version) { |
242 | default: { | 237 | default: { |
243 | ulong raddr; | 238 | ulong raddr; |
244 | ret = do_shmat (first, (char *) ptr, | 239 | ret = do_shmat (first, ptr, second, &raddr); |
245 | second, &raddr); | ||
246 | if (ret) | 240 | if (ret) |
247 | return ret; | 241 | return ret; |
248 | return put_user (raddr, (ulong *) third); | 242 | return put_user (raddr, (ulong __user *) third); |
249 | } | 243 | } |
250 | } | 244 | } |
251 | case SHMDT: | 245 | case SHMDT: |
252 | return sys_shmdt ((char *)ptr); | 246 | return sys_shmdt (ptr); |
253 | case SHMGET: | 247 | case SHMGET: |
254 | return sys_shmget (first, second, third); | 248 | return sys_shmget (first, second, third); |
255 | case SHMCTL: | 249 | case SHMCTL: |
256 | return sys_shmctl (first, second, | 250 | return sys_shmctl (first, second, ptr); |
257 | (struct shmid_ds *) ptr); | ||
258 | default: | 251 | default: |
259 | return -ENOSYS; | 252 | return -ENOSYS; |
260 | } | 253 | } |