summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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