On Thu, Oct 15 2020 at 07:17, Jens Axboe wrote:
> --- a/arch/x86/kernel/signal.c
> +++ b/arch/x86/kernel/signal.c
> @@ -808,7 +808,10 @@ void arch_do_signal(struct pt_regs *regs, unsigned long 
> ti_work)
>  {
>       struct ksignal ksig;
>  
> -     if (get_signal(&ksig)) {
> +     if (ti_work & _TIF_NOTIFY_SIGNAL)
> +             tracehook_notify_signal();
> +
> +     if ((ti_work & _TIF_SIGPENDING) && get_signal(&ksig)) {
>               /* Whee! Actually deliver the signal.  */
>               handle_signal(&ksig, regs);
>               return;

Instead of adding this to every architectures signal magic, we can
handle TIF_NOTIFY_SIGNAL in the core code:

static void handle_singal_work(ti_work, regs)
{
        if (ti_work & _TIF_NOTIFY_SIGNAL)
                tracehook_notify_signal();

        arch_do_signal(ti_work, regs);
}

      loop {
                if (ti_work & (SIGPENDING | NOTIFY_SIGNAL))
                        handle_signal_work(ti_work, regs);
      }

Hmm?

Thanks,

        tglx

Reply via email to