Module Name: src Committed By: jdolecek Date: Fri May 25 20:11:03 UTC 2018
Modified Files: src/sys/uvm: uvm_loan.c Log Message: add the KASSERT() for loan_count wrap-around to all places which increase it To generate a diff of this commit: cvs rdiff -u -r1.86 -r1.87 src/sys/uvm/uvm_loan.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_loan.c diff -u src/sys/uvm/uvm_loan.c:1.86 src/sys/uvm/uvm_loan.c:1.87 --- src/sys/uvm/uvm_loan.c:1.86 Sat May 19 11:02:33 2018 +++ src/sys/uvm/uvm_loan.c Fri May 25 20:11:03 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_loan.c,v 1.86 2018/05/19 11:02:33 jdolecek Exp $ */ +/* $NetBSD: uvm_loan.c,v 1.87 2018/05/25 20:11:03 jdolecek Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: uvm_loan.c,v 1.86 2018/05/19 11:02:33 jdolecek Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uvm_loan.c,v 1.87 2018/05/25 20:11:03 jdolecek Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -475,6 +475,7 @@ uvm_loanpage(struct vm_page **pgpp, int pmap_page_protect(pg, VM_PROT_READ); } pg->loan_count++; + KASSERT(pg->loan_count > 0); /* detect wrap-around */ uvm_pageactivate(pg); mutex_exit(&uvm_pageqlock); } @@ -788,6 +789,7 @@ uvm_loanuobj(struct uvm_faultinfo *ufi, pmap_page_protect(pg, VM_PROT_READ); } pg->loan_count++; + KASSERT(pg->loan_count > 0); /* detect wrap-around */ pg->uanon = anon; anon->an_page = pg; anon->an_lock = /* TODO: share amap lock */ @@ -879,6 +881,7 @@ again: if ((flags & UVM_LOAN_TOANON) == 0) { /* loaning to kernel-page */ mutex_enter(&uvm_pageqlock); pg->loan_count++; + KASSERT(pg->loan_count > 0); /* detect wrap-around */ mutex_exit(&uvm_pageqlock); mutex_exit(uvm_loanzero_object.vmobjlock); **output = pg; @@ -919,6 +922,7 @@ again: pg->uanon = anon; mutex_enter(&uvm_pageqlock); pg->loan_count++; + KASSERT(pg->loan_count > 0); /* detect wrap-around */ uvm_pageactivate(pg); mutex_exit(&uvm_pageqlock); mutex_exit(&anon->an_lock);