summaryrefslogtreecommitdiffstats
path: root/sys/ufs
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2011-07-04 20:52:23 +0000
committerjeff <jeff@FreeBSD.org>2011-07-04 20:52:23 +0000
commit4fa1a63e5a6c86de49fffbcb5289ecba305c6608 (patch)
tree58da153c5b422c63b24fb226766ff42379a77bf3 /sys/ufs
parentb1bf1da00e2316c1dc2007f81bc9f58f9185877a (diff)
downloadFreeBSD-src-4fa1a63e5a6c86de49fffbcb5289ecba305c6608.zip
FreeBSD-src-4fa1a63e5a6c86de49fffbcb5289ecba305c6608.tar.gz
- Fix an inode quota leak. We need to decrement the quota once and only
once. Tested by: pho Reviewed by: mckusick
Diffstat (limited to 'sys/ufs')
-rw-r--r--sys/ufs/ufs/ufs_inode.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/sys/ufs/ufs/ufs_inode.c b/sys/ufs/ufs/ufs_inode.c
index 7ddbe97..129c26d 100644
--- a/sys/ufs/ufs/ufs_inode.c
+++ b/sys/ufs/ufs/ufs_inode.c
@@ -120,15 +120,14 @@ ufs_inactive(ap)
isize = ip->i_size;
if (ip->i_ump->um_fstype == UFS2)
isize += ip->i_din2->di_extsize;
- if (ip->i_effnlink <= 0 && isize && !UFS_RDONLY(ip)) {
+ if (ip->i_effnlink <= 0 && isize && !UFS_RDONLY(ip))
+ error = UFS_TRUNCATE(vp, (off_t)0, IO_EXT | IO_NORMAL,
+ NOCRED, td);
+ if (ip->i_nlink <= 0 && ip->i_mode && !UFS_RDONLY(ip)) {
#ifdef QUOTA
if (!getinoquota(ip))
(void)chkiq(ip, -1, NOCRED, FORCE);
#endif
- error = UFS_TRUNCATE(vp, (off_t)0, IO_EXT | IO_NORMAL,
- NOCRED, td);
- }
- if (ip->i_nlink <= 0 && ip->i_mode && !UFS_RDONLY(ip)) {
#ifdef UFS_EXTATTR
ufs_extattr_vnode_inactive(vp, td);
#endif
OpenPOWER on IntegriCloud