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