diff options
Diffstat (limited to 'sys/ufs')
-rw-r--r-- | sys/ufs/ffs/ffs_alloc.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/ufs/ffs/ffs_alloc.c b/sys/ufs/ffs/ffs_alloc.c index e2fb3ab..321bf5a 100644 --- a/sys/ufs/ffs/ffs_alloc.c +++ b/sys/ufs/ffs/ffs_alloc.c @@ -1906,10 +1906,12 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS) vn_start_write((struct vnode *)fp->f_data, &mp, V_WAIT); if (mp == 0 || strncmp(mp->mnt_stat.f_fstypename, "ufs", MFSNAMELEN)) { vn_finished_write(mp); + fdrop(fp, curthread); return (EINVAL); } if (mp->mnt_flag & MNT_RDONLY) { vn_finished_write(mp); + fdrop(fp, curthread); return (EROFS); } ump = VFSTOUFS(mp); @@ -2041,6 +2043,7 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS) break; } + fdrop(fp, curthread); vn_finished_write(mp); return (error); } |