aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/vfs_subr.c
diff options
context:
space:
mode:
authorMateusz Guzik <mjg@FreeBSD.org>2020-12-05 05:56:23 +0000
committerMateusz Guzik <mjg@FreeBSD.org>2020-12-05 05:56:23 +0000
commit0c23d26230a134c6fc3159e5c131eaa874f6b9be (patch)
treeec1003c829ea3d037b05d47a4b9bd50b4d1b4b31 /sys/kern/vfs_subr.c
parent4afa7dd61a3a1454a5b3cf5e6de2029c7e2d9a84 (diff)
downloadsrc-0c23d26230a134c6fc3159e5c131eaa874f6b9be.tar.gz
src-0c23d26230a134c6fc3159e5c131eaa874f6b9be.zip
vfs: keep bad ops on vnode reclaim
They were only modified to accomodate a redundant assertion. This runs into problems as lockless lookup can still try to use the vnode and crash instead of getting an error. The bug was only present in kernels with INVARIANTS. Reported by: kevans
Notes
Notes: svn path=/head/; revision=368360
Diffstat (limited to 'sys/kern/vfs_subr.c')
-rw-r--r--sys/kern/vfs_subr.c6
1 files changed, 0 insertions, 6 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 4a988f9dd57a..0f9fb5fe263c 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -1816,10 +1816,6 @@ freevnode(struct vnode *vp)
destroy_vpollinfo(vp->v_pollinfo);
vp->v_pollinfo = NULL;
}
-#ifdef INVARIANTS
- /* XXX Elsewhere we detect an already freed vnode via NULL v_op. */
- vp->v_op = NULL;
-#endif
vp->v_mountedhere = NULL;
vp->v_unpcb = NULL;
vp->v_rdev = NULL;
@@ -3458,8 +3454,6 @@ vdrop_deactivate(struct vnode *vp)
*/
VNASSERT(!VN_IS_DOOMED(vp), vp,
("vdrop: returning doomed vnode"));
- VNASSERT(vp->v_op != NULL, vp,
- ("vdrop: vnode already reclaimed."));
VNASSERT((vp->v_iflag & VI_OWEINACT) == 0, vp,
("vnode with VI_OWEINACT set"));
VNASSERT((vp->v_iflag & VI_DEFINACT) == 0, vp,