Commit 3f2a0d1d authored by Roland McGrath's avatar Roland McGrath Committed by Linus Torvalds

[PATCH] fix pdeath_signal SMP locking

Obviously almost noone uses the pdeath_signal feature, since this has gone
unnoticed for quite some time.

This patch calls the function that does the right locking for the context
of this call (inside exit_notify).  The names of the signal.c entrypoints
are a little confusing.
parent 477552e4
...@@ -207,6 +207,7 @@ static inline void init_sigpending(struct sigpending *sig) ...@@ -207,6 +207,7 @@ static inline void init_sigpending(struct sigpending *sig)
INIT_LIST_HEAD(&sig->list); INIT_LIST_HEAD(&sig->list);
} }
extern int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p);
extern long do_sigpending(void __user *, unsigned long); extern long do_sigpending(void __user *, unsigned long);
extern int sigprocmask(int, sigset_t *, sigset_t *); extern int sigprocmask(int, sigset_t *, sigset_t *);
......
...@@ -529,7 +529,8 @@ static inline void reparent_thread(task_t *p, task_t *father, int traced) ...@@ -529,7 +529,8 @@ static inline void reparent_thread(task_t *p, task_t *father, int traced)
p->self_exec_id++; p->self_exec_id++;
if (p->pdeath_signal) if (p->pdeath_signal)
send_group_sig_info(p->pdeath_signal, 0, p); /* We already hold the tasklist_lock here. */
group_send_sig_info(p->pdeath_signal, (void *) 0, p);
/* Move the child from its dying parent to the new one. */ /* Move the child from its dying parent to the new one. */
if (unlikely(traced)) { if (unlikely(traced)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment