Module Name: src
Committed By: ad
Date: Sun May 17 17:12:28 UTC 2020
Modified Files:
src/sys/uvm: uvm_page.c
Log Message:
Don't set PG_AOBJ on a page unless UVM_OBJ_IS_AOBJ(), otherwise it can
catch pages from e.g. uvm_loanzero_object.
To generate a diff of this commit:
cvs rdiff -u -r1.235 -r1.236 src/sys/uvm/uvm_page.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_page.c
diff -u src/sys/uvm/uvm_page.c:1.235 src/sys/uvm/uvm_page.c:1.236
--- src/sys/uvm/uvm_page.c:1.235 Sun May 17 15:11:57 2020
+++ src/sys/uvm/uvm_page.c Sun May 17 17:12:28 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: uvm_page.c,v 1.235 2020/05/17 15:11:57 ad Exp $ */
+/* $NetBSD: uvm_page.c,v 1.236 2020/05/17 17:12:28 ad Exp $ */
/*-
* Copyright (c) 2019, 2020 The NetBSD Foundation, Inc.
@@ -95,7 +95,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_page.c,v 1.235 2020/05/17 15:11:57 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_page.c,v 1.236 2020/05/17 17:12:28 ad Exp $");
#include "opt_ddb.h"
#include "opt_uvm.h"
@@ -220,10 +220,8 @@ uvm_pageinsert_object(struct uvm_object
if ((pg->flags & PG_STAT) != 0) {
/* Cannot use uvm_pagegetdirty(): not yet in radix tree. */
const unsigned int status = pg->flags & (PG_CLEAN | PG_DIRTY);
- const bool isaobj = (pg->flags & PG_AOBJ) != 0;
- if (!isaobj) {
- KASSERT((pg->flags & PG_FILE) != 0);
+ if ((pg->flags & PG_FILE) != 0) {
if (uobj->uo_npages == 0) {
struct vnode *vp = (struct vnode *)uobj;
mutex_enter(vp->v_interlock);
@@ -285,10 +283,8 @@ uvm_pageremove_object(struct uvm_object
if ((pg->flags & PG_STAT) != 0) {
/* Cannot use uvm_pagegetdirty(): no longer in radix tree. */
const unsigned int status = pg->flags & (PG_CLEAN | PG_DIRTY);
- const bool isaobj = (pg->flags & PG_AOBJ) != 0;
- if (!isaobj) {
- KASSERT((pg->flags & PG_FILE) != 0);
+ if ((pg->flags & PG_FILE) != 0) {
if (uobj->uo_npages == 1) {
struct vnode *vp = (struct vnode *)uobj;
mutex_enter(vp->v_interlock);
@@ -1336,7 +1332,7 @@ uvm_pagealloc_strat(struct uvm_object *o
*/
if (UVM_OBJ_IS_VNODE(obj)) {
pg->flags |= PG_FILE;
- } else {
+ } else if (UVM_OBJ_IS_AOBJ(obj)) {
pg->flags |= PG_AOBJ;
}
uvm_pageinsert_object(obj, pg);