Source-Changes-HG archive

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

[src/trunk]: src/sys/uvm the previous fix for PR 55366 in uvm_amap.c 1.124 wa...



details:   https://anonhg.NetBSD.org/src/rev/e601ce42fa88
branches:  trunk
changeset: 944160:e601ce42fa88
user:      chs <chs%NetBSD.org@localhost>
date:      Mon Sep 21 18:41:59 2020 +0000

description:
the previous fix for PR 55366 in uvm_amap.c 1.124 was incomplete:
 - amap_adjref_anons() must also ignore AMAP_REFALL when updating
   the ppref, not just when deciding whether or not to initialize ppref.
 - UVM_EXTRACT_QREF relies on AMAP_REFALL to work properly,
   and since we can't use AMAP_REFALL then we can't use QREF either.

diffstat:

 sys/uvm/uvm_amap.c |  10 +++-------
 sys/uvm/uvm_io.c   |   8 ++++++--
 2 files changed, 9 insertions(+), 9 deletions(-)

diffs (60 lines):

diff -r cd1786938060 -r e601ce42fa88 sys/uvm/uvm_amap.c
--- a/sys/uvm/uvm_amap.c        Mon Sep 21 17:52:31 2020 +0000
+++ b/sys/uvm/uvm_amap.c        Mon Sep 21 18:41:59 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: uvm_amap.c,v 1.124 2020/09/20 23:03:01 chs Exp $       */
+/*     $NetBSD: uvm_amap.c,v 1.125 2020/09/21 18:41:59 chs Exp $       */
 
 /*
  * Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_amap.c,v 1.124 2020/09/20 23:03:01 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_amap.c,v 1.125 2020/09/21 18:41:59 chs Exp $");
 
 #include "opt_uvmhist.h"
 
@@ -1602,11 +1602,7 @@
 
 #ifdef UVM_AMAP_PPREF
        if (amap->am_ppref && amap->am_ppref != PPREF_NONE) {
-               if (all) {
-                       amap_pp_adjref(amap, 0, amap->am_nslot, refv);
-               } else {
-                       amap_pp_adjref(amap, offset, len, refv);
-               }
+               amap_pp_adjref(amap, offset, len, refv);
        }
 #endif
        amap_unlock(amap);
diff -r cd1786938060 -r e601ce42fa88 sys/uvm/uvm_io.c
--- a/sys/uvm/uvm_io.c  Mon Sep 21 17:52:31 2020 +0000
+++ b/sys/uvm/uvm_io.c  Mon Sep 21 18:41:59 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: uvm_io.c,v 1.28 2016/05/25 17:43:58 christos Exp $     */
+/*     $NetBSD: uvm_io.c,v 1.29 2020/09/21 18:41:59 chs Exp $  */
 
 /*
  * Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_io.c,v 1.28 2016/05/25 17:43:58 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_io.c,v 1.29 2020/09/21 18:41:59 chs Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -87,6 +87,10 @@
        error = 0;
 
        flags |= UVM_EXTRACT_QREF | UVM_EXTRACT_CONTIG | UVM_EXTRACT_FIXPROT;
+
+       /* XXX cannot use QREF with without AMAP_REFALL, and REFALL is unsafe */
+       flags &= ~UVM_EXTRACT_QREF;
+
        /*
         * step 1: main loop...  while we've got data to move
         */



Home | Main Index | Thread Index | Old Index