NetBSD/sys/ufs
bouyer aa0e1a2ecf vclean() actually sets v_tag to VT_NON but doesn't touch v_type.
getcleanvnode() sets v_type to VNON after releasing v_interlock.
So the thread doing quotaon(), quotaoff() or qsync() could vget()
a vnode which is being recycled in getcleanvnode(), after is has
been cleaned and v_interlock released, but before v_type has been
reset, leading to KASSERT(vp->v_usecount == 1) firing in
getnewvnode(), or qsync() dereferending a NULL pointer as in
PR kern/42205.
Fix by using the same tests as other ffs function traversing the mount
list: also check for VTOI(vp) == NULL, and VI_XLOCK in addition
to VI_CLEAN.
2010-01-15 19:46:35 +00:00
..
ext2fs The VATTR_NULL/VREF/VHOLD/HOLDRELE() macros lost their will to live 2010-01-08 11:35:07 +00:00
ffs The VATTR_NULL/VREF/VHOLD/HOLDRELE() macros lost their will to live 2010-01-08 11:35:07 +00:00
lfs The VATTR_NULL/VREF/VHOLD/HOLDRELE() macros lost their will to live 2010-01-08 11:35:07 +00:00
mfs
ufs vclean() actually sets v_tag to VT_NON but doesn't touch v_type. 2010-01-15 19:46:35 +00:00
files.ufs
Makefile