Module Name:    src
Committed By:   yhardy
Date:           Fri Nov 27 22:32:43 UTC 2020

Modified Files:
        src/sys/uvm: uvm_mremap.c

Log Message:
uvm_mremap: reference the appropriate backing object.

The previous approach was appropriate for anonymous
memory and device objects, which continue to work in
the same way.

OK: chs@
Fixes: PR 55237


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/sys/uvm/uvm_mremap.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/uvm/uvm_mremap.c
diff -u src/sys/uvm/uvm_mremap.c:1.20 src/sys/uvm/uvm_mremap.c:1.21
--- src/sys/uvm/uvm_mremap.c:1.20	Sun Feb 23 15:46:43 2020
+++ src/sys/uvm/uvm_mremap.c	Fri Nov 27 22:32:43 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvm_mremap.c,v 1.20 2020/02/23 15:46:43 ad Exp $	*/
+/*	$NetBSD: uvm_mremap.c,v 1.21 2020/11/27 22:32:43 yhardy Exp $	*/
 
 /*-
  * Copyright (c)2006,2007,2009 YAMAMOTO Takashi,
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_mremap.c,v 1.20 2020/02/23 15:46:43 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_mremap.c,v 1.21 2020/11/27 22:32:43 yhardy Exp $");
 
 #include <sys/param.h>
 #include <sys/mman.h>
@@ -80,10 +80,8 @@ uvm_mapent_extend(struct vm_map *map, va
 			error = E2BIG; /* XXX */
 			goto done;
 		}
-		rw_enter(uobj->vmobjlock, RW_WRITER);
-		KASSERT(uobj->uo_refs > 0);
-		atomic_inc_uint(&uobj->uo_refs);
-		rw_exit(uobj->vmobjlock);
+		if (uobj->pgops->pgo_reference)
+			uobj->pgops->pgo_reference(uobj);
 		reserved_entry->object.uvm_obj = uobj;
 		reserved_entry->offset = newoffset;
 	}

Reply via email to