summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2017-01-09 10:31:39 +0000
committerkib <kib@FreeBSD.org>2017-01-09 10:31:39 +0000
commit91f6edbb8913d163d5c16fb615e84baf8a16d390 (patch)
tree5a7ac3ad056a1c72330f8c6289146b62597ff054 /sys/kern
parent7fd8dbb0698a84b91cba8216b9caf3cbe9754788 (diff)
downloadFreeBSD-src-91f6edbb8913d163d5c16fb615e84baf8a16d390.zip
FreeBSD-src-91f6edbb8913d163d5c16fb615e84baf8a16d390.tar.gz
MFC r311113:
There is no need to use temporary statfs buffer for fsid obliteration and prison enforcement. Do it on the caller buffer directly.
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/vfs_syscalls.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index bb3065e..9f922db 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -259,7 +259,7 @@ statfs_scale_blocks(struct statfs *sf, long max_size)
static int
kern_do_statfs(struct thread *td, struct mount *mp, struct statfs *buf)
{
- struct statfs *sp, sb;
+ struct statfs *sp;
int error;
if (mp == NULL)
@@ -283,13 +283,11 @@ kern_do_statfs(struct thread *td, struct mount *mp, struct statfs *buf)
error = VFS_STATFS(mp, sp);
if (error != 0)
goto out;
+ *buf = *sp;
if (priv_check(td, PRIV_VFS_GENERATION)) {
- bcopy(sp, &sb, sizeof(sb));
- sb.f_fsid.val[0] = sb.f_fsid.val[1] = 0;
- prison_enforce_statfs(td->td_ucred, mp, &sb);
- sp = &sb;
+ buf->f_fsid.val[0] = buf->f_fsid.val[1] = 0;
+ prison_enforce_statfs(td->td_ucred, mp, buf);
}
- *buf = *sp;
out:
vfs_unbusy(mp);
return (error);
OpenPOWER on IntegriCloud