Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 33041
b: refs/heads/master
c: ae74c3b
h: refs/heads/master
i:
  33039: a3282fb
v: v3
  • Loading branch information
Linus Torvalds committed Aug 3, 2006
1 parent 36aba94 commit 6b065fe
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 202668ecb6cb221460d884598dd4cd2e1f3292f3
refs/heads/master: ae74c3b69a08e1de20cb681ec959f3a48af0006a
25 changes: 17 additions & 8 deletions trunk/kernel/signal.c
Original file line number Diff line number Diff line change
Expand Up @@ -791,22 +791,31 @@ specific_send_sig_info(int sig, struct siginfo *info, struct task_struct *t)
/*
* Force a signal that the process can't ignore: if necessary
* we unblock the signal and change any SIG_IGN to SIG_DFL.
*
* Note: If we unblock the signal, we always reset it to SIG_DFL,
* since we do not want to have a signal handler that was blocked
* be invoked when user space had explicitly blocked it.
*
* We don't want to have recursive SIGSEGV's etc, for example.
*/

int
force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
{
unsigned long int flags;
int ret;
int ret, blocked, ignored;
struct k_sigaction *action;

spin_lock_irqsave(&t->sighand->siglock, flags);
if (t->sighand->action[sig-1].sa.sa_handler == SIG_IGN) {
t->sighand->action[sig-1].sa.sa_handler = SIG_DFL;
}
if (sigismember(&t->blocked, sig)) {
sigdelset(&t->blocked, sig);
action = &t->sighand->action[sig-1];
ignored = action->sa.sa_handler == SIG_IGN;
blocked = sigismember(&t->blocked, sig);
if (blocked || ignored) {
action->sa.sa_handler = SIG_DFL;
if (blocked) {
sigdelset(&t->blocked, sig);
recalc_sigpending_tsk(t);
}
}
recalc_sigpending_tsk(t);
ret = specific_send_sig_info(sig, info, t);
spin_unlock_irqrestore(&t->sighand->siglock, flags);

Expand Down

0 comments on commit 6b065fe

Please sign in to comment.