mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-17 05:43:59 +00:00
dbfcf8cfea
changed to defer the setting of VN_LOCK_ASHARE() (which clears LK_NOSHARE in the vnode lock's flags) until after they had determined if the vnode was a FIFO. This occurs after the vnode has been inserted a VFS hash or some similar table, so it is possible for another thread to find this vnode via vget() on an i-node number and block on the vnode lock. If the lockmgr interlock (vnode interlock for vnode locks) is not held when clearing the LK_NOSHARE flag, then the lk_flags field can be clobbered. As a result the thread blocked on the vnode lock may never get woken up. Fix this by holding the vnode interlock while modifying the lock flags in this case. MFC after: 3 days |
||
---|---|---|
.. | ||
cd9660_bmap.c | ||
cd9660_iconv.c | ||
cd9660_lookup.c | ||
cd9660_mount.h | ||
cd9660_node.c | ||
cd9660_node.h | ||
cd9660_rrip.c | ||
cd9660_rrip.h | ||
cd9660_util.c | ||
cd9660_vfsops.c | ||
cd9660_vnops.c | ||
iso.h | ||
iso_rrip.h | ||
TODO | ||
TODO.hibler |