Revert "signal, x86: Delay calling signals in atomic on RT enabled kernels"

Revert commit bf9ad37dc8. It needs to be better encapsulated and
generalized.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
This commit is contained in:
Thomas Gleixner
2022-03-31 10:36:55 +02:00
parent 787af64d05
commit 7dd5ad2d3e
5 changed files with 0 additions and 68 deletions

View File

@@ -1307,43 +1307,6 @@ enum sig_handler {
HANDLER_EXIT, /* Only visible as the process exit code */
};
/*
* On some archictectures, PREEMPT_RT has to delay sending a signal from a
* trap since it cannot enable preemption, and the signal code's
* spin_locks turn into mutexes. Instead, it must set TIF_NOTIFY_RESUME
* which will send the signal on exit of the trap.
*/
#ifdef CONFIG_RT_DELAYED_SIGNALS
static inline bool force_sig_delayed(struct kernel_siginfo *info,
struct task_struct *t)
{
if (!in_atomic())
return false;
if (WARN_ON_ONCE(t->forced_info.si_signo))
return true;
if (is_si_special(info)) {
WARN_ON_ONCE(info != SEND_SIG_PRIV);
t->forced_info.si_signo = info->si_signo;
t->forced_info.si_errno = 0;
t->forced_info.si_code = SI_KERNEL;
t->forced_info.si_pid = 0;
t->forced_info.si_uid = 0;
} else {
t->forced_info = *info;
}
set_tsk_thread_flag(t, TIF_NOTIFY_RESUME);
return true;
}
#else
static inline bool force_sig_delayed(struct kernel_siginfo *info,
struct task_struct *t)
{
return false;
}
#endif
/*
* Force a signal that the process can't ignore: if necessary
* we unblock the signal and change any SIG_IGN to SIG_DFL.
@@ -1364,9 +1327,6 @@ force_sig_info_to_task(struct kernel_siginfo *info, struct task_struct *t,
struct k_sigaction *action;
int sig = info->si_signo;
if (force_sig_delayed(info, t))
return 0;
spin_lock_irqsave(&t->sighand->siglock, flags);
action = &t->sighand->action[sig-1];
ignored = action->sa.sa_handler == SIG_IGN;