CVSROOT:        /cvs
Module name:    src
Changes by:     [email protected]  2026/11/07 11:01:08

Modified files:
        sys/kern       : vfs_subr.c 

Log message:
sys/vfs: skip DOCLOSE for incomplete spec vnodes

Several checkalias() callers discard the vnode passed to checkalias()
after moving its filesystem node to the returned alias. In the uncommon
block device alias case, checkalias() leaves that discarded vnode as a
shell: it uses spec_vops, but has no specinfo.

If vgonel() reclaims such a vnode while the caller still holds the last
reference, vclean(DOCLOSE) treats it as active and dispatches
VOP_CLOSE() to spec_close(), which expects v_specinfo to be present and
dereferences v_rdev.

Such shell vnodes do not represent an opened device instance, so there
is nothing to close through spec_vops. Skip DOCLOSE for spec_vops vnodes
without specinfo.

OK: beck@

Reply via email to