Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

sh: switch to generic old sigaction()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro 0679a858 881e252d

+3 -66
+1
arch/sh/Kconfig
··· 42 42 select MODULES_USE_ELF_RELA 43 43 select GENERIC_SIGALTSTACK 44 44 select OLD_SIGSUSPEND 45 + select OLD_SIGACTION 45 46 help 46 47 The SuperH is a RISC processor targeted for use in embedded systems 47 48 and consumer electronics; it was also used in the Sega Dreamcast
-2
arch/sh/include/asm/syscalls_32.h
··· 9 9 10 10 struct pt_regs; 11 11 12 - asmlinkage int sys_sigaction(int sig, const struct old_sigaction __user *act, 13 - struct old_sigaction __user *oact); 14 12 asmlinkage int sys_sigreturn(unsigned long r4, unsigned long r5, 15 13 unsigned long r6, unsigned long r7, 16 14 struct pt_regs __regs);
+2
arch/sh/include/uapi/asm/signal.h
··· 5 5 6 6 #include <asm-generic/signal.h> 7 7 8 + #ifndef __KERNEL__ 8 9 struct old_sigaction { 9 10 __sighandler_t sa_handler; 10 11 old_sigset_t sa_mask; 11 12 unsigned long sa_flags; 12 13 void (*sa_restorer)(void); 13 14 }; 15 + #endif 14 16 15 17 #endif /* __ASM_SH_SIGNAL_H */
-32
arch/sh/kernel/signal_32.c
··· 46 46 */ 47 47 #define UNWINDGUARD 64 48 48 49 - asmlinkage int 50 - sys_sigaction(int sig, const struct old_sigaction __user *act, 51 - struct old_sigaction __user *oact) 52 - { 53 - struct k_sigaction new_ka, old_ka; 54 - int ret; 55 - 56 - if (act) { 57 - old_sigset_t mask; 58 - if (!access_ok(VERIFY_READ, act, sizeof(*act)) || 59 - __get_user(new_ka.sa.sa_handler, &act->sa_handler) || 60 - __get_user(new_ka.sa.sa_restorer, &act->sa_restorer) || 61 - __get_user(new_ka.sa.sa_flags, &act->sa_flags) || 62 - __get_user(mask, &act->sa_mask)) 63 - return -EFAULT; 64 - siginitset(&new_ka.sa.sa_mask, mask); 65 - } 66 - 67 - ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); 68 - 69 - if (!ret && oact) { 70 - if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) || 71 - __put_user(old_ka.sa.sa_handler, &oact->sa_handler) || 72 - __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer) || 73 - __put_user(old_ka.sa.sa_flags, &oact->sa_flags) || 74 - __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask)) 75 - return -EFAULT; 76 - } 77 - 78 - return ret; 79 - } 80 - 81 49 /* 82 50 * Do a signal return; undo the signal stack. 83 51 */
-32
arch/sh/kernel/signal_64.c
··· 127 127 restore_saved_sigmask(); 128 128 } 129 129 130 - asmlinkage int 131 - sys_sigaction(int sig, const struct old_sigaction __user *act, 132 - struct old_sigaction __user *oact) 133 - { 134 - struct k_sigaction new_ka, old_ka; 135 - int ret; 136 - 137 - if (act) { 138 - old_sigset_t mask; 139 - if (!access_ok(VERIFY_READ, act, sizeof(*act)) || 140 - __get_user(new_ka.sa.sa_handler, &act->sa_handler) || 141 - __get_user(new_ka.sa.sa_restorer, &act->sa_restorer) || 142 - __get_user(new_ka.sa.sa_flags, &act->sa_flags) || 143 - __get_user(mask, &act->sa_mask)) 144 - return -EFAULT; 145 - siginitset(&new_ka.sa.sa_mask, mask); 146 - } 147 - 148 - ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); 149 - 150 - if (!ret && oact) { 151 - if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) || 152 - __put_user(old_ka.sa.sa_handler, &oact->sa_handler) || 153 - __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer) || 154 - __put_user(old_ka.sa.sa_flags, &oact->sa_flags) || 155 - __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask)) 156 - return -EFAULT; 157 - } 158 - 159 - return ret; 160 - } 161 - 162 130 /* 163 131 * Do a signal return; undo the signal stack. 164 132 */