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 g/c BUFQ_FOO() macros and use bufq_foo() directly. 2009-01-13 13:33:58 +00:00
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 PR kern/26878 FFSv2 + softdep = livelock (no free ram) 2009-02-22 20:28:05 +00:00
Makefile