diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2012-12-25 15:47:10 -0500 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-02-03 18:16:09 -0500 |
| commit | 309e44b39e355770ec0cec7df26071beb298e7f2 (patch) | |
| tree | 0b620c5b0de44517e6580aeaf5b5764fe43fd950 | |
| parent | cfe0467c4e1390ba9386389e722d1d409201a5dc (diff) | |
powerpc: switch to generic compat rt_sigqueueinfo()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| -rw-r--r-- | arch/powerpc/Kconfig | 1 | ||||
| -rw-r--r-- | arch/powerpc/kernel/signal_32.c | 24 |
2 files changed, 1 insertions, 24 deletions
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index f54143cd5fa2..b23d70795409 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
| @@ -145,6 +145,7 @@ config PPC | |||
| 145 | select MODULES_USE_ELF_RELA | 145 | select MODULES_USE_ELF_RELA |
| 146 | select CLONE_BACKWARDS | 146 | select CLONE_BACKWARDS |
| 147 | select GENERIC_SIGALTSTACK | 147 | select GENERIC_SIGALTSTACK |
| 148 | select GENERIC_COMPAT_RT_SIGQUEUEINFO | ||
| 148 | select GENERIC_COMPAT_RT_SIGPROCMASK | 149 | select GENERIC_COMPAT_RT_SIGPROCMASK |
| 149 | select GENERIC_COMPAT_RT_SIGPENDING | 150 | select GENERIC_COMPAT_RT_SIGPENDING |
| 150 | 151 | ||
diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c index de586801fd78..8a5ea4a8f5d8 100644 --- a/arch/powerpc/kernel/signal_32.c +++ b/arch/powerpc/kernel/signal_32.c | |||
| @@ -688,30 +688,6 @@ int copy_siginfo_from_user32(siginfo_t *to, struct compat_siginfo __user *from) | |||
| 688 | 688 | ||
| 689 | return 0; | 689 | return 0; |
| 690 | } | 690 | } |
| 691 | |||
| 692 | /* | ||
| 693 | * Note: it is necessary to treat pid and sig as unsigned ints, with the | ||
| 694 | * corresponding cast to a signed int to insure that the proper conversion | ||
| 695 | * (sign extension) between the register representation of a signed int | ||
| 696 | * (msr in 32-bit mode) and the register representation of a signed int | ||
| 697 | * (msr in 64-bit mode) is performed. | ||
| 698 | */ | ||
| 699 | long compat_sys_rt_sigqueueinfo(u32 pid, u32 sig, compat_siginfo_t __user *uinfo) | ||
| 700 | { | ||
| 701 | siginfo_t info; | ||
| 702 | int ret; | ||
| 703 | mm_segment_t old_fs = get_fs(); | ||
| 704 | |||
| 705 | ret = copy_siginfo_from_user32(&info, uinfo); | ||
| 706 | if (unlikely(ret)) | ||
| 707 | return ret; | ||
| 708 | |||
| 709 | set_fs (KERNEL_DS); | ||
| 710 | /* The __user pointer cast is valid becasuse of the set_fs() */ | ||
| 711 | ret = sys_rt_sigqueueinfo((int)pid, (int)sig, (siginfo_t __user *) &info); | ||
| 712 | set_fs (old_fs); | ||
| 713 | return ret; | ||
| 714 | } | ||
| 715 | #endif /* CONFIG_PPC64 */ | 691 | #endif /* CONFIG_PPC64 */ |
| 716 | 692 | ||
| 717 | /* | 693 | /* |
