svn commit: r368076 - head/sys/kern

Konstantin Belousov kib at FreeBSD.org
Thu Nov 26 18:13:34 UTC 2020


Author: kib
Date: Thu Nov 26 18:13:33 2020
New Revision: 368076
URL: https://svnweb.freebsd.org/changeset/base/368076

Log:
  vn_read_from_obj(): fix handling of doomed vnodes.
  
  There is no reason why vp->v_object cannot be NULL. If it is, it's
  fine, handle it by delegating to VOP_READ().
  
  Tested by:	pho
  Reviewed by:	markj, mjg
  Sponsored by:	The FreeBSD Foundation
  Differential revision:	https://reviews.freebsd.org/D27327

Modified:
  head/sys/kern/vfs_vnops.c

Modified: head/sys/kern/vfs_vnops.c
==============================================================================
--- head/sys/kern/vfs_vnops.c	Thu Nov 26 18:08:42 2020	(r368075)
+++ head/sys/kern/vfs_vnops.c	Thu Nov 26 18:13:33 2020	(r368076)
@@ -870,10 +870,10 @@ vn_read_from_obj(struct vnode *vp, struct uio *uio)
 	ssize_t resid;
 	int error, i, j;
 
-	obj = vp->v_object;
 	MPASS(uio->uio_resid <= ptoa(io_hold_cnt + 2));
-	MPASS(obj != NULL);
-	MPASS(obj->type == OBJT_VNODE);
+	obj = atomic_load_ptr(&vp->v_object);
+	if (obj == NULL)
+		return (EJUSTRETURN);
 
 	/*
 	 * Depends on type stability of vm_objects.


More information about the svn-src-head mailing list