I'd like to ease reviews of the FREF()/FRELE() dances by keeping their
number small.  In the case of sys_fstatfs() it's easy to have a single
FRELE() for the corresponding getvnode().  Ok?

Index: kern/vfs_syscalls.c
===================================================================
RCS file: /cvs/src/sys/kern/vfs_syscalls.c,v
retrieving revision 1.277
diff -u -p -r1.277 vfs_syscalls.c
--- kern/vfs_syscalls.c 28 Mar 2018 09:47:52 -0000      1.277
+++ kern/vfs_syscalls.c 2 Apr 2018 10:46:35 -0000
@@ -653,18 +653,18 @@ sys_fstatfs(struct proc *p, void *v, reg
        if ((error = getvnode(p, SCARG(uap, fd), &fp)) != 0)
                return (error);
        mp = ((struct vnode *)fp->f_data)->v_mount;
-       if (!mp) {
-               FRELE(fp, p);
-               return (ENOENT);
+       if (mp == NULL) {
+               error = ENOENT;
+       } else {
+               sp = &mp->mnt_stat;
+               error = VFS_STATFS(mp, sp, p);
+               if (error == 0) {
+                       sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
+                       error = copyout_statfs(sp, SCARG(uap, buf), p);
+               }
        }
-       sp = &mp->mnt_stat;
-       error = VFS_STATFS(mp, sp, p);
        FRELE(fp, p);
-       if (error)
-               return (error);
-       sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
-
-       return (copyout_statfs(sp, SCARG(uap, buf), p));
+       return (error);
 }
 
 /*

Reply via email to