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; }