freebsd-dev/sys/fs
Konstantin Belousov effc6a3593 VOP_LOOKUP() may relock the directory vnode for some reasons. Since
nullfs vnode shares vnode lock with lower vnode, this allows the
reclamation of nullfs directory vnode in null_lookup().  In this
situation, VOP must return ENOENT.

More, since after the reclamation, the locks of nullfs directory vnode
and lower vnode are no longer shared, the relock of the ldvp does not
restore the correct locking state of dvp, and leaks ldvp lock.
Correct this by unlocking ldvp and locking dvp.

Use cached value of dvp->v_mount.

Reported by:	bdrewery
Tested by:	pho
Sponsored by:	The FreeBSD Foundation
MFC after:	2 weeks
2014-08-08 11:39:05 +00:00
..
cd9660 Generalize vn_get_ino() to allow filesystems to use custom vnode 2014-07-14 08:34:54 +00:00
cuse Use existing PHOLD() and PRELE() macros. 2014-06-24 18:25:43 +00:00
deadfs The deadfs VOPs for vop_ioctl and vop_bmap call itself recursively, 2012-09-13 13:05:45 +00:00
devfs In msdosfs_setattr(), add a check for result of the utimes(2) 2014-06-17 07:11:00 +00:00
ext2fs Revert r269523: 2014-08-05 01:25:14 +00:00
fdescfs Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
fifofs Ignore the error from pipespace_new when creating a pipe. 2014-05-02 00:52:13 +00:00
fuse Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
msdosfs Generalize vn_get_ino() to allow filesystems to use custom vnode 2014-07-14 08:34:54 +00:00
nandfs Set the erase block size properly in the case the underlying media 2014-08-02 05:05:16 +00:00
nfs Do not generate 1000 unique lock names for nfsrc hash chain locks. 2014-07-31 19:24:44 +00:00
nfsclient Check for the cross-device cross-link attempt in the VFS, instead of 2014-07-16 14:04:46 +00:00
nfsserver Do not generate 1000 unique lock names for nfsrc hash chain locks. 2014-07-31 19:24:44 +00:00
nullfs VOP_LOOKUP() may relock the directory vnode for some reasons. Since 2014-08-08 11:39:05 +00:00
procfs Relax the vm object locking. Use a read lock. 2013-06-05 17:00:10 +00:00
pseudofs Redo r258088 to avoid relying on signed arithmetic overflow, since 2013-11-20 19:41:00 +00:00
smbfs Use SMB_QUERY_FS_SIZE_INFO request to populate statfs structure. 2014-04-15 09:10:01 +00:00
tmpfs Do not ignore error from tmpfs_alloc_vp(). It results in access to 2014-07-16 14:08:01 +00:00
udf Add currently unused flag argument to the cluster_read(), 2013-03-14 20:28:26 +00:00
unionfs r16312 is not any longer real since many years (likely since when VFS 2012-11-19 22:43:45 +00:00