The kern_wait() code already removes the SIGCHLD signal for the waited

process. Removing other SIGCHLD signals is not needed and may cause
problems.

Pointed out by:	jilles

MFC after:	1 Month.
This commit is contained in:
Dmitry Chagin 2011-01-30 18:17:38 +00:00
parent 54a6cb4e7b
commit 9adaae9403
2 changed files with 0 additions and 14 deletions

View File

@ -1283,7 +1283,6 @@ linux_wait4(struct thread *td, struct linux_wait4_args *args)
int error, options;
struct rusage ru, *rup;
struct l_rusage lru;
struct proc *p;
#ifdef DEBUG
if (ldebug(wait4))
@ -1304,12 +1303,6 @@ linux_wait4(struct thread *td, struct linux_wait4_args *args)
error = linux_common_wait(td, args->pid, args->status, options, rup);
if (error)
return (error);
p = td->td_proc;
PROC_LOCK(p);
sigqueue_delete(&p->p_sigqueue, SIGCHLD);
PROC_UNLOCK(p);
if (args->rusage != NULL) {
bsd_to_linux_rusage(rup, &lru);
error = copyout(&lru, args->rusage, sizeof(lru));

View File

@ -1318,7 +1318,6 @@ linux_wait4(struct thread *td, struct linux_wait4_args *args)
{
int error, options;
struct rusage ru, *rup;
struct proc *p;
#ifdef DEBUG
if (ldebug(wait4))
@ -1339,12 +1338,6 @@ linux_wait4(struct thread *td, struct linux_wait4_args *args)
error = linux_common_wait(td, args->pid, args->status, options, rup);
if (error)
return (error);
p = td->td_proc;
PROC_LOCK(p);
sigqueue_delete(&p->p_sigqueue, SIGCHLD);
PROC_UNLOCK(p);
if (args->rusage != NULL)
error = copyout(&ru, args->rusage, sizeof(ru));