From 2f970b91c77a3e63a2f3af468e6fdad2264cd2f3 Mon Sep 17 00:00:00 2001 From: Andrew Gallatin Date: Sat, 29 Jan 2000 06:31:27 +0000 Subject: [PATCH] changes to osf1_wait4() - only allocate rusage struct when caller wants rusage info - fix a stupid paren mismatch bug that was causing EPERM to get returned to callers rather then ECHILD --- sys/alpha/osf1/osf1_misc.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/sys/alpha/osf1/osf1_misc.c b/sys/alpha/osf1/osf1_misc.c index be49993f90e..1fcb381409e 100644 --- a/sys/alpha/osf1/osf1_misc.c +++ b/sys/alpha/osf1/osf1_misc.c @@ -1320,13 +1320,15 @@ osf1_wait4(p, uap) int error; caddr_t sg; struct osf1_rusage *orusage, oru; - struct rusage *rusage, ru; + struct rusage *rusage = NULL, ru; - sg = stackgap_init(); - rusage = stackgap_alloc(&sg, sizeof(struct rusage)); orusage = SCARG(uap, rusage); - SCARG(uap, rusage) = (struct osf1_rusage *)rusage; - if ((error = wait4(p, (struct wait_args *)uap) != 0)) + if (orusage) { + sg = stackgap_init(); + rusage = stackgap_alloc(&sg, sizeof(struct rusage)); + SCARG(uap, rusage) = (struct osf1_rusage *)rusage; + } + if ((error = wait4(p, (struct wait_args *)uap))) return error; if (orusage && (error = copyin(rusage, &ru, sizeof(ru)) == 0)){ TV_CP(ru.ru_utime, oru.ru_utime);