diff options
Diffstat (limited to 'ipc/compat.c')
-rw-r--r-- | ipc/compat.c | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/ipc/compat.c b/ipc/compat.c index 892f6585dd60..f486b0096a67 100644 --- a/ipc/compat.c +++ b/ipc/compat.c | |||
@@ -197,7 +197,7 @@ static inline int __put_compat_ipc_perm(struct ipc64_perm *p, | |||
197 | static inline int get_compat_semid64_ds(struct semid64_ds *s64, | 197 | static inline int get_compat_semid64_ds(struct semid64_ds *s64, |
198 | struct compat_semid64_ds __user *up64) | 198 | struct compat_semid64_ds __user *up64) |
199 | { | 199 | { |
200 | if (!access_ok (VERIFY_READ, up64, sizeof(*up64))) | 200 | if (!access_ok(VERIFY_READ, up64, sizeof(*up64))) |
201 | return -EFAULT; | 201 | return -EFAULT; |
202 | return __get_compat_ipc64_perm(&s64->sem_perm, &up64->sem_perm); | 202 | return __get_compat_ipc64_perm(&s64->sem_perm, &up64->sem_perm); |
203 | } | 203 | } |
@@ -205,7 +205,7 @@ static inline int get_compat_semid64_ds(struct semid64_ds *s64, | |||
205 | static inline int get_compat_semid_ds(struct semid64_ds *s, | 205 | static inline int get_compat_semid_ds(struct semid64_ds *s, |
206 | struct compat_semid_ds __user *up) | 206 | struct compat_semid_ds __user *up) |
207 | { | 207 | { |
208 | if (!access_ok (VERIFY_READ, up, sizeof(*up))) | 208 | if (!access_ok(VERIFY_READ, up, sizeof(*up))) |
209 | return -EFAULT; | 209 | return -EFAULT; |
210 | return __get_compat_ipc_perm(&s->sem_perm, &up->sem_perm); | 210 | return __get_compat_ipc_perm(&s->sem_perm, &up->sem_perm); |
211 | } | 211 | } |
@@ -215,7 +215,7 @@ static inline int put_compat_semid64_ds(struct semid64_ds *s64, | |||
215 | { | 215 | { |
216 | int err; | 216 | int err; |
217 | 217 | ||
218 | if (!access_ok (VERIFY_WRITE, up64, sizeof(*up64))) | 218 | if (!access_ok(VERIFY_WRITE, up64, sizeof(*up64))) |
219 | return -EFAULT; | 219 | return -EFAULT; |
220 | err = __put_compat_ipc64_perm(&s64->sem_perm, &up64->sem_perm); | 220 | err = __put_compat_ipc64_perm(&s64->sem_perm, &up64->sem_perm); |
221 | err |= __put_user(s64->sem_otime, &up64->sem_otime); | 221 | err |= __put_user(s64->sem_otime, &up64->sem_otime); |
@@ -229,7 +229,7 @@ static inline int put_compat_semid_ds(struct semid64_ds *s, | |||
229 | { | 229 | { |
230 | int err; | 230 | int err; |
231 | 231 | ||
232 | if (!access_ok (VERIFY_WRITE, up, sizeof(*up))) | 232 | if (!access_ok(VERIFY_WRITE, up, sizeof(*up))) |
233 | return -EFAULT; | 233 | return -EFAULT; |
234 | err = __put_compat_ipc_perm(&s->sem_perm, &up->sem_perm); | 234 | err = __put_compat_ipc_perm(&s->sem_perm, &up->sem_perm); |
235 | err |= __put_user(s->sem_otime, &up->sem_otime); | 235 | err |= __put_user(s->sem_otime, &up->sem_otime); |
@@ -288,11 +288,11 @@ static long do_compat_semctl(int first, int second, int third, u32 pad) | |||
288 | break; | 288 | break; |
289 | 289 | ||
290 | case IPC_SET: | 290 | case IPC_SET: |
291 | if (version == IPC_64) { | 291 | if (version == IPC_64) |
292 | err = get_compat_semid64_ds(&s64, compat_ptr(pad)); | 292 | err = get_compat_semid64_ds(&s64, compat_ptr(pad)); |
293 | } else { | 293 | else |
294 | err = get_compat_semid_ds(&s64, compat_ptr(pad)); | 294 | err = get_compat_semid_ds(&s64, compat_ptr(pad)); |
295 | } | 295 | |
296 | up64 = compat_alloc_user_space(sizeof(s64)); | 296 | up64 = compat_alloc_user_space(sizeof(s64)); |
297 | if (copy_to_user(up64, &s64, sizeof(s64))) | 297 | if (copy_to_user(up64, &s64, sizeof(s64))) |
298 | err = -EFAULT; | 298 | err = -EFAULT; |
@@ -376,12 +376,12 @@ COMPAT_SYSCALL_DEFINE6(ipc, u32, call, int, first, int, second, | |||
376 | struct compat_ipc_kludge ipck; | 376 | struct compat_ipc_kludge ipck; |
377 | if (!uptr) | 377 | if (!uptr) |
378 | return -EINVAL; | 378 | return -EINVAL; |
379 | if (copy_from_user (&ipck, uptr, sizeof(ipck))) | 379 | if (copy_from_user(&ipck, uptr, sizeof(ipck))) |
380 | return -EFAULT; | 380 | return -EFAULT; |
381 | uptr = compat_ptr(ipck.msgp); | 381 | uptr = compat_ptr(ipck.msgp); |
382 | fifth = ipck.msgtyp; | 382 | fifth = ipck.msgtyp; |
383 | } | 383 | } |
384 | return do_msgrcv(first, uptr, second, fifth, third, | 384 | return do_msgrcv(first, uptr, second, (s32)fifth, third, |
385 | compat_do_msg_fill); | 385 | compat_do_msg_fill); |
386 | } | 386 | } |
387 | case MSGGET: | 387 | case MSGGET: |
@@ -515,11 +515,11 @@ long compat_sys_msgctl(int first, int second, void __user *uptr) | |||
515 | break; | 515 | break; |
516 | 516 | ||
517 | case IPC_SET: | 517 | case IPC_SET: |
518 | if (version == IPC_64) { | 518 | if (version == IPC_64) |
519 | err = get_compat_msqid64(&m64, uptr); | 519 | err = get_compat_msqid64(&m64, uptr); |
520 | } else { | 520 | else |
521 | err = get_compat_msqid(&m64, uptr); | 521 | err = get_compat_msqid(&m64, uptr); |
522 | } | 522 | |
523 | if (err) | 523 | if (err) |
524 | break; | 524 | break; |
525 | p = compat_alloc_user_space(sizeof(m64)); | 525 | p = compat_alloc_user_space(sizeof(m64)); |
@@ -702,11 +702,11 @@ long compat_sys_shmctl(int first, int second, void __user *uptr) | |||
702 | 702 | ||
703 | 703 | ||
704 | case IPC_SET: | 704 | case IPC_SET: |
705 | if (version == IPC_64) { | 705 | if (version == IPC_64) |
706 | err = get_compat_shmid64_ds(&s64, uptr); | 706 | err = get_compat_shmid64_ds(&s64, uptr); |
707 | } else { | 707 | else |
708 | err = get_compat_shmid_ds(&s64, uptr); | 708 | err = get_compat_shmid_ds(&s64, uptr); |
709 | } | 709 | |
710 | if (err) | 710 | if (err) |
711 | break; | 711 | break; |
712 | p = compat_alloc_user_space(sizeof(s64)); | 712 | p = compat_alloc_user_space(sizeof(s64)); |