summaryrefslogtreecommitdiffstats
path: root/sys/fs
diff options
context:
space:
mode:
authorattilio <attilio@FreeBSD.org>2008-02-13 13:02:12 +0000
committerattilio <attilio@FreeBSD.org>2008-02-13 13:02:12 +0000
commit313dc11b0b7ad402a5819a72cb35c4f81522f3f5 (patch)
tree98270b47bb927406533bd194db7d8d5d2f2296f2 /sys/fs
parent517ddcfb705fb05303e965a0ef145cd38070db7e (diff)
downloadFreeBSD-src-313dc11b0b7ad402a5819a72cb35c4f81522f3f5.zip
FreeBSD-src-313dc11b0b7ad402a5819a72cb35c4f81522f3f5.tar.gz
Fix a lock leak in the ntfs locking scheme:
When ntfs_ntput() reaches 0 in the refcount the inode lockmgr is not released and directly destroyed. Fix this by unlocking the lockmgr() even in the case of zero-refcount. Reported by: dougb, yar, Scot Hetzel <swhetzel at gmail dot com> Submitted by: yar
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/ntfs/ntfs_subr.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/fs/ntfs/ntfs_subr.c b/sys/fs/ntfs/ntfs_subr.c
index f05a915..1329e02 100644
--- a/sys/fs/ntfs/ntfs_subr.c
+++ b/sys/fs/ntfs/ntfs_subr.c
@@ -462,7 +462,7 @@ ntfs_ntput(ip)
LIST_REMOVE(vap,va_list);
ntfs_freentvattr(vap);
}
- mtx_unlock(&ip->i_interlock);
+ lockmgr(&ip->i_lock, LK_RELEASE | LK_INTERLOCK, &ip->i_interlock);
mtx_destroy(&ip->i_interlock);
lockdestroy(&ip->i_lock);
vrele(ip->i_devvp);
OpenPOWER on IntegriCloud