aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2026-02-25 15:31:30 +0000
committerColin Percival <cperciva@FreeBSD.org>2026-02-26 03:12:43 +0000
commit49684d7d93d318391c4a2b33b74f5cc3fba61143 (patch)
tree4163aad2df0cb158130404538111f05784828924
parent20cff160e140cbc595fd2da12bba628a5413439d (diff)
-rw-r--r--sys/fs/nullfs/null_vfsops.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/sys/fs/nullfs/null_vfsops.c b/sys/fs/nullfs/null_vfsops.c
index 8b9e04775449..cb637c98673e 100644
--- a/sys/fs/nullfs/null_vfsops.c
+++ b/sys/fs/nullfs/null_vfsops.c
@@ -465,16 +465,12 @@ nullfs_unlink_lowervp(struct mount *mp, struct vnode *lowervp)
vhold(vp);
vunref(vp);
- if (vp->v_usecount == 0) {
+ if (VN_IS_DOOMED(vp)) {
/*
- * If vunref() dropped the last use reference on the
- * nullfs vnode, it must be reclaimed, and its lock
- * was split from the lower vnode lock. Need to do
- * extra unlock before allowing the final vdrop() to
- * free the vnode.
+ * If the vnode is doomed, its lock was split from the lower
+ * vnode lock. Therefore we need to do an extra unlock before
+ * allowing the final vdrop() to free the vnode.
*/
- KASSERT(VN_IS_DOOMED(vp),
- ("not reclaimed nullfs vnode %p", vp));
VOP_UNLOCK(vp);
} else {
/*
@@ -484,8 +480,6 @@ nullfs_unlink_lowervp(struct mount *mp, struct vnode *lowervp)
* relevant for future reclamations.
*/
ASSERT_VOP_ELOCKED(vp, "unlink_lowervp");
- KASSERT(!VN_IS_DOOMED(vp),
- ("reclaimed nullfs vnode %p", vp));
xp->null_flags &= ~NULLV_NOUNLOCK;
}
vdrop(vp);