summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2017-11-04 10:10:34 +0000
committerLuiz Souza <luiz@netgate.com>2018-02-21 15:15:13 -0300
commit47aac30b6f41db4be76373692e126f2282af9f0b (patch)
treef22407057742de4a07f7157fe7177c6de3ae8ece
parent2dfee35a96127a22781179695a8344c8dc24fbfc (diff)
downloadFreeBSD-src-47aac30b6f41db4be76373692e126f2282af9f0b.zip
FreeBSD-src-47aac30b6f41db4be76373692e126f2282af9f0b.tar.gz
MFC r324824:
Check that the page which is freed as zeroed, indeed has all-zero content. (cherry picked from commit 0519574f8cf9e9258b0499d6f2833990b377c5d7)
-rw-r--r--sys/vm/vm_page.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
index 17b9231..4b6dcbe 100644
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -2767,6 +2767,16 @@ bool
vm_page_free_prep(vm_page_t m, bool pagequeue_locked)
{
+#if defined(DIAGNOSTIC) && defined(PHYS_TO_DMAP)
+ if ((m->flags & PG_ZERO) != 0) {
+ uint64_t *p;
+ int i;
+ p = (uint64_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m));
+ for (i = 0; i < PAGE_SIZE / sizeof(uint64_t); i++, p++)
+ KASSERT(*p == 0, ("vm_page_free_prep %p PG_ZERO %d %jx",
+ m, i, (uintmax_t)*p));
+ }
+#endif
if ((m->oflags & VPO_UNMANAGED) == 0) {
vm_page_lock_assert(m, MA_OWNED);
KASSERT(!pmap_page_is_mapped(m),
OpenPOWER on IntegriCloud