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 ---