Module Name:    src
Committed By:   uebayasi
Date:           Fri Feb 12 16:06:50 UTC 2010

Modified Files:
        src/sys/uvm [uebayasi-xip]: uvm_fault.c

Log Message:
uvmfault_promote: For promotion from a "lower" page, pass the belonging struct
uvm_object * from callers, because device page struct vm_page * doesn't have
a back-pointer to the uvm_object.


To generate a diff of this commit:
cvs rdiff -u -r1.166 -r1.166.2.1 src/sys/uvm/uvm_fault.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_fault.c
diff -u src/sys/uvm/uvm_fault.c:1.166 src/sys/uvm/uvm_fault.c:1.166.2.1
--- src/sys/uvm/uvm_fault.c:1.166	Mon Feb  8 00:02:50 2010
+++ src/sys/uvm/uvm_fault.c	Fri Feb 12 16:06:50 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvm_fault.c,v 1.166 2010/02/08 00:02:50 mlelstv Exp $	*/
+/*	$NetBSD: uvm_fault.c,v 1.166.2.1 2010/02/12 16:06:50 uebayasi Exp $	*/
 
 /*
  *
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_fault.c,v 1.166 2010/02/08 00:02:50 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_fault.c,v 1.166.2.1 2010/02/12 16:06:50 uebayasi Exp $");
 
 #include "opt_uvmhist.h"
 
@@ -546,12 +546,12 @@
 static int
 uvmfault_promote(struct uvm_faultinfo *ufi,
     struct vm_anon *oanon,
+    struct uvm_object *uobj,
     struct vm_page *uobjpage,
     struct vm_anon **nanon, /* OUT: allocated anon */
     struct vm_anon **spare)
 {
 	struct vm_amap *amap = ufi->entry->aref.ar_amap;
-	struct uvm_object *uobj;
 	struct vm_anon *anon;
 	struct vm_page *pg;
 	struct vm_page *opg;
@@ -570,11 +570,6 @@
 		/* ZFOD */
 		opg = NULL;
 	}
-	if (opg != NULL) {
-		uobj = opg->uobject;
-	} else {
-		uobj = NULL;
-	}
 
 	KASSERT(amap != NULL);
 	KASSERT(uobjpage != NULL);
@@ -1534,7 +1529,7 @@
 	UVMHIST_LOG(maphist, "  case 1B: COW fault",0,0,0,0);
 	uvmexp.flt_acow++;
 
-	error = uvmfault_promote(ufi, oanon, PGO_DONTCARE,
+	error = uvmfault_promote(ufi, oanon, NULL, PGO_DONTCARE,
 	    &anon, &flt->anon_spare);
 	switch (error) {
 	case 0:
@@ -1986,7 +1981,7 @@
 	if (amap == NULL)
 		panic("uvm_fault: want to promote data, but no anon");
 #endif
-	error = uvmfault_promote(ufi, NULL, uobjpage,
+	error = uvmfault_promote(ufi, NULL, uobj, uobjpage,
 	    &anon, &flt->anon_spare);
 	switch (error) {
 	case 0:

Reply via email to