svn commit: r366252 - head/sys/contrib/openzfs/module/os/freebsd/zfs

Mark Johnston markj at FreeBSD.org
Tue Sep 29 13:41:48 UTC 2020


Author: markj
Date: Tue Sep 29 13:41:47 2020
New Revision: 366252
URL: https://svnweb.freebsd.org/changeset/base/366252

Log:
  ZFS: Fix a logic bug in the FreeBSD getpages VOP
  
  This was introduced when I merged r361287 to OpenZFS and has been fixed
  there already, commit 3f6bb6e43fd68e.
  
  Reported by:	swills
  Reviewed by:	allanjude, freqlabs, mmacy

Modified:
  head/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops.c

Modified: head/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops.c
==============================================================================
--- head/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops.c	Tue Sep 29 11:48:22 2020	(r366251)
+++ head/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops.c	Tue Sep 29 13:41:47 2020	(r366252)
@@ -4859,7 +4859,8 @@ zfs_getpages(struct vnode *vp, vm_page_t *ma, int coun
 	obj_size = object->un_pager.vnp.vnp_size;
 	zfs_vmobject_wunlock(object);
 	if (IDX_TO_OFF(ma[count - 1]->pindex) >= obj_size) {
-		zfs_rangelock_exit(lr);
+		if (lr != NULL)
+			zfs_rangelock_exit(lr);
 		ZFS_EXIT(zfsvfs);
 		return (zfs_vm_pagerret_bad);
 	}
@@ -4887,7 +4888,8 @@ zfs_getpages(struct vnode *vp, vm_page_t *ma, int coun
 	error = dmu_read_pages(os, zp->z_id, ma, count, &pgsin_b, &pgsin_a,
 	    MIN(end, obj_size) - (end - PAGE_SIZE));
 
-	zfs_rangelock_exit(lr);
+	if (lr != NULL)
+		zfs_rangelock_exit(lr);
 	ZFS_ACCESSTIME_STAMP(zfsvfs, zp);
 	ZFS_EXIT(zfsvfs);
 


More information about the svn-src-all mailing list