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:
parent
54a6cb4e7b
commit
9adaae9403
@ -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));
|
||||
|
@ -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));
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user