Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/uvm uvm_mremap: reference the appropriate backing object.



details:   https://anonhg.NetBSD.org/src/rev/7511fbbe1b6a
branches:  trunk
changeset: 946437:7511fbbe1b6a
user:      yhardy <yhardy%NetBSD.org@localhost>
date:      Fri Nov 27 22:32:43 2020 +0000

description:
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

diffstat:

 sys/uvm/uvm_mremap.c |  10 ++++------
 1 files changed, 4 insertions(+), 6 deletions(-)

diffs (31 lines):

diff -r e95997e86a7e -r 7511fbbe1b6a sys/uvm/uvm_mremap.c
--- a/sys/uvm/uvm_mremap.c      Fri Nov 27 20:11:33 2020 +0000
+++ b/sys/uvm/uvm_mremap.c      Fri Nov 27 22:32:43 2020 +0000
@@ -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 @@
                        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;
        }



Home | Main Index | Thread Index | Old Index