aboutsummaryrefslogtreecommitdiff
path: root/sys/compat
diff options
context:
space:
mode:
authorAlan Somers <asomers@FreeBSD.org>2018-07-29 18:22:26 +0000
committerAlan Somers <asomers@FreeBSD.org>2018-07-29 18:22:26 +0000
commit5cf35a100c33b082a8b951288f5ce2625b2c9f5b (patch)
tree4789821faef78d80a7ae43b75b15dc127e4ea56a /sys/compat
parent6dfd050075216be8538ae375a22d30db72916f7e (diff)
downloadsrc-5cf35a100c33b082a8b951288f5ce2625b2c9f5b.tar.gz
src-5cf35a100c33b082a8b951288f5ce2625b2c9f5b.zip
getrusage(2): fix return value under 32-bit emulation
According to the man page, getrusage(2) should return EFAULT if the rusage argument lies outside of the process's address space. But due to an oversight in r100384, that's never been the case during 32-bit emulation. Fix it. PR: 230153 Reported by: tests(7) Reviewed by: cem MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D16500
Notes
Notes: svn path=/head/; revision=336871
Diffstat (limited to 'sys/compat')
-rw-r--r--sys/compat/freebsd32/freebsd32_misc.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/sys/compat/freebsd32/freebsd32_misc.c b/sys/compat/freebsd32/freebsd32_misc.c
index 2cfc985a3b1c..77153b674008 100644
--- a/sys/compat/freebsd32/freebsd32_misc.c
+++ b/sys/compat/freebsd32/freebsd32_misc.c
@@ -883,12 +883,9 @@ freebsd32_getrusage(struct thread *td, struct freebsd32_getrusage_args *uap)
int error;
error = kern_getrusage(td, uap->who, &s);
- if (error)
- return (error);
- if (uap->rusage != NULL) {
- freebsd32_rusage_out(&s, &s32);
+ freebsd32_rusage_out(&s, &s32);
+ if (error == 0)
error = copyout(&s32, uap->rusage, sizeof(s32));
- }
return (error);
}