diff options
author | attilio <attilio@FreeBSD.org> | 2008-02-13 13:02:12 +0000 |
---|---|---|
committer | attilio <attilio@FreeBSD.org> | 2008-02-13 13:02:12 +0000 |
commit | 313dc11b0b7ad402a5819a72cb35c4f81522f3f5 (patch) | |
tree | 98270b47bb927406533bd194db7d8d5d2f2296f2 /sys/fs | |
parent | 517ddcfb705fb05303e965a0ef145cd38070db7e (diff) | |
download | FreeBSD-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.c | 2 |
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); |