diff options
| author | Linus Torvalds <torvalds@home.transmeta.com> | 2003-02-23 17:40:38 -0800 |
|---|---|---|
| committer | David S. Miller <davem@kernel.bkbits.net> | 2003-02-23 17:40:38 -0800 |
| commit | 53876ab402e2d1f566c052ab1be45680f2f69949 (patch) | |
| tree | b7670eef4113cd6ee205a00d3cd9fb96d7decf2b /kernel | |
| parent | 9183797933d3b58f32d15a8be2670317ec7d070b (diff) | |
Add support for forcing default signal handlers to flush_signal_handlers().
Make kmod force default handlers before executing the user process.
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/kmod.c | 2 | ||||
| -rw-r--r-- | kernel/signal.c | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/kernel/kmod.c b/kernel/kmod.c index 01c18cacc58b..971fc7438a6b 100644 --- a/kernel/kmod.c +++ b/kernel/kmod.c @@ -155,7 +155,7 @@ static int ____call_usermodehelper(void *data) /* Unblock all signals. */ flush_signals(current); spin_lock_irq(¤t->sighand->siglock); - flush_signal_handlers(current); + flush_signal_handlers(current, 1); sigemptyset(¤t->blocked); recalc_sigpending(); spin_unlock_irq(¤t->sighand->siglock); diff --git a/kernel/signal.c b/kernel/signal.c index 0f64a3867736..49e483f8451e 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -356,12 +356,12 @@ void exit_signal(struct task_struct *tsk) */ void -flush_signal_handlers(struct task_struct *t) +flush_signal_handlers(struct task_struct *t, int force_default) { int i; struct k_sigaction *ka = &t->sighand->action[0]; for (i = _NSIG ; i != 0 ; i--) { - if (ka->sa.sa_handler != SIG_IGN) + if (force_default || ka->sa.sa_handler != SIG_IGN) ka->sa.sa_handler = SIG_DFL; ka->sa.sa_flags = 0; sigemptyset(&ka->sa.sa_mask); |
