diff --git a/kernel/signal.c b/kernel/signal.c index 8d1eb40394b7d1c3f5af405e5ae71a952c5db085..dae415f8785a7a4693699e7c92088f432808566f 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -1146,6 +1146,7 @@ int send_sig_info(int sig, struct siginfo *info, struct task_struct *p) { int ret; + unsigned long flags; /* * We need the tasklist lock even for the specific @@ -1154,9 +1155,9 @@ send_sig_info(int sig, struct siginfo *info, struct task_struct *p) * going away or changing from under us. */ read_lock(&tasklist_lock); - spin_lock_irq(&p->sighand->siglock); + spin_lock_irqsave(&p->sighand->siglock, flags); ret = specific_send_sig_info(sig, info, p); - spin_unlock_irq(&p->sighand->siglock); + spin_unlock_irqrestore(&p->sighand->siglock, flags); read_unlock(&tasklist_lock); return ret; }