diff options
author | kib <kib@FreeBSD.org> | 2017-11-04 10:10:34 +0000 |
---|---|---|
committer | Luiz Souza <luiz@netgate.com> | 2018-02-21 15:15:13 -0300 |
commit | 47aac30b6f41db4be76373692e126f2282af9f0b (patch) | |
tree | f22407057742de4a07f7157fe7177c6de3ae8ece | |
parent | 2dfee35a96127a22781179695a8344c8dc24fbfc (diff) | |
download | FreeBSD-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.c | 10 |
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), |