signal.c (3dd4eb83a9c08ed6af482a5417323a6c8f4fc7a7) | signal.c (0a7601b6ffddec11d7cc0bc3264daf0159f5e1a6) |
---|---|
1/* 2 * Common signal handling code for both 32 and 64 bits 3 * 4 * Copyright (c) 2007 Benjamin Herrenschmidt, IBM Corporation 5 * Extracted from signal_32.c and signal_64.c 6 * 7 * This file is subject to the terms and conditions of the GNU General 8 * Public License. See the file README.legal in the main directory of --- 233 unchanged lines hidden (view full) --- 242 } 243} 244 245static void do_signal(struct task_struct *tsk) 246{ 247 sigset_t *oldset = sigmask_to_save(); 248 struct ksignal ksig = { .sig = 0 }; 249 int ret; | 1/* 2 * Common signal handling code for both 32 and 64 bits 3 * 4 * Copyright (c) 2007 Benjamin Herrenschmidt, IBM Corporation 5 * Extracted from signal_32.c and signal_64.c 6 * 7 * This file is subject to the terms and conditions of the GNU General 8 * Public License. See the file README.legal in the main directory of --- 233 unchanged lines hidden (view full) --- 242 } 243} 244 245static void do_signal(struct task_struct *tsk) 246{ 247 sigset_t *oldset = sigmask_to_save(); 248 struct ksignal ksig = { .sig = 0 }; 249 int ret; |
250 int is32 = is_32bit_task(); | |
251 252 BUG_ON(tsk != current); 253 254 get_signal(&ksig); 255 256 /* Is there any syscall restart business here ? */ 257 check_syscall_restart(tsk->thread.regs, &ksig.ka, ksig.sig > 0); 258 --- 13 unchanged lines hidden (view full) --- 272 if (tsk->thread.hw_brk.address && tsk->thread.hw_brk.type) 273 __set_breakpoint(&tsk->thread.hw_brk); 274#endif 275 /* Re-enable the breakpoints for the signal stack */ 276 thread_change_pc(tsk, tsk->thread.regs); 277 278 rseq_signal_deliver(&ksig, tsk->thread.regs); 279 | 250 251 BUG_ON(tsk != current); 252 253 get_signal(&ksig); 254 255 /* Is there any syscall restart business here ? */ 256 check_syscall_restart(tsk->thread.regs, &ksig.ka, ksig.sig > 0); 257 --- 13 unchanged lines hidden (view full) --- 271 if (tsk->thread.hw_brk.address && tsk->thread.hw_brk.type) 272 __set_breakpoint(&tsk->thread.hw_brk); 273#endif 274 /* Re-enable the breakpoints for the signal stack */ 275 thread_change_pc(tsk, tsk->thread.regs); 276 277 rseq_signal_deliver(&ksig, tsk->thread.regs); 278 |
280 if (is32) { | 279 if (is_32bit_task()) { |
281 if (ksig.ka.sa.sa_flags & SA_SIGINFO) 282 ret = handle_rt_signal32(&ksig, oldset, tsk); 283 else 284 ret = handle_signal32(&ksig, oldset, tsk); 285 } else { 286 ret = handle_rt_signal64(&ksig, oldset, tsk); 287 } 288 --- 79 unchanged lines hidden --- | 280 if (ksig.ka.sa.sa_flags & SA_SIGINFO) 281 ret = handle_rt_signal32(&ksig, oldset, tsk); 282 else 283 ret = handle_signal32(&ksig, oldset, tsk); 284 } else { 285 ret = handle_rt_signal64(&ksig, oldset, tsk); 286 } 287 --- 79 unchanged lines hidden --- |