summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_exit.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/kern_exit.c')
-rw-r--r--sys/kern/kern_exit.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c
index 125f210..3a20fb1 100644
--- a/sys/kern/kern_exit.c
+++ b/sys/kern/kern_exit.c
@@ -723,9 +723,9 @@ sys_wait4(struct thread *td, struct wait4_args *uap)
else
rup = NULL;
error = kern_wait(td, uap->pid, &status, uap->options, rup);
- if (uap->status != NULL && error == 0)
+ if (uap->status != NULL && error == 0 && td->td_retval[0] != 0)
error = copyout(&status, uap->status, sizeof(status));
- if (uap->rusage != NULL && error == 0)
+ if (uap->rusage != NULL && error == 0 && td->td_retval[0] != 0)
error = copyout(&ru, uap->rusage, sizeof(struct rusage));
return (error);
}
@@ -759,9 +759,9 @@ sys_wait6(struct thread *td, struct wait6_args *uap)
*/
error = kern_wait6(td, idtype, id, &status, uap->options, wrup, sip);
- if (uap->status != NULL && error == 0)
+ if (uap->status != NULL && error == 0 && td->td_retval[0] != 0)
error = copyout(&status, uap->status, sizeof(status));
- if (uap->wrusage != NULL && error == 0)
+ if (uap->wrusage != NULL && error == 0 && td->td_retval[0] != 0)
error = copyout(&wru, uap->wrusage, sizeof(wru));
if (uap->info != NULL && error == 0)
error = copyout(&si, uap->info, sizeof(si));
OpenPOWER on IntegriCloud