diff options
-rw-r--r-- | arch/sparc64/kernel/sys_sparc.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/arch/sparc64/kernel/sys_sparc.c b/arch/sparc64/kernel/sys_sparc.c index d108eeb0734f..0d5c50264945 100644 --- a/arch/sparc64/kernel/sys_sparc.c +++ b/arch/sparc64/kernel/sys_sparc.c | |||
@@ -436,7 +436,7 @@ out: | |||
436 | asmlinkage long sys_ipc(unsigned int call, int first, unsigned long second, | 436 | asmlinkage long sys_ipc(unsigned int call, int first, unsigned long second, |
437 | unsigned long third, void __user *ptr, long fifth) | 437 | unsigned long third, void __user *ptr, long fifth) |
438 | { | 438 | { |
439 | int err; | 439 | long err; |
440 | 440 | ||
441 | /* No need for backward compatibility. We can start fresh... */ | 441 | /* No need for backward compatibility. We can start fresh... */ |
442 | if (call <= SEMCTL) { | 442 | if (call <= SEMCTL) { |
@@ -453,16 +453,9 @@ asmlinkage long sys_ipc(unsigned int call, int first, unsigned long second, | |||
453 | err = sys_semget(first, (int)second, (int)third); | 453 | err = sys_semget(first, (int)second, (int)third); |
454 | goto out; | 454 | goto out; |
455 | case SEMCTL: { | 455 | case SEMCTL: { |
456 | union semun fourth; | 456 | err = sys_semctl(first, third, |
457 | err = -EINVAL; | 457 | (int)second | IPC_64, |
458 | if (!ptr) | 458 | (union semun) ptr); |
459 | goto out; | ||
460 | err = -EFAULT; | ||
461 | if (get_user(fourth.__pad, | ||
462 | (void __user * __user *) ptr)) | ||
463 | goto out; | ||
464 | err = sys_semctl(first, (int)second | IPC_64, | ||
465 | (int)third, fourth); | ||
466 | goto out; | 459 | goto out; |
467 | } | 460 | } |
468 | default: | 461 | default: |