diff options
author | mdf <mdf@FreeBSD.org> | 2010-08-31 17:43:47 +0000 |
---|---|---|
committer | mdf <mdf@FreeBSD.org> | 2010-08-31 17:43:47 +0000 |
commit | 9690cad4e39c8559605213c37833bd2dd2d2a77a (patch) | |
tree | 299a9b4f91d1fa6001be1cc067d2188c63c3957e /sys/vm | |
parent | 8902e95517f765c3c460a9eeb28aa143253efd9e (diff) | |
download | FreeBSD-src-9690cad4e39c8559605213c37833bd2dd2d2a77a.zip FreeBSD-src-9690cad4e39c8559605213c37833bd2dd2d2a77a.tar.gz |
Have memguard(9) crash with an easier-to-debug message on double-free.
Reviewed by: zml
MFC after: 3 weeks
Diffstat (limited to 'sys/vm')
-rw-r--r-- | sys/vm/memguard.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/vm/memguard.c b/sys/vm/memguard.c index 85893ab..3cf935c 100644 --- a/sys/vm/memguard.c +++ b/sys/vm/memguard.c @@ -247,9 +247,13 @@ SYSINIT(memguard, SI_SUB_KLD, SI_ORDER_ANY, memguard_sysinit, NULL); static u_long * v2sizep(vm_offset_t va) { + vm_paddr_t pa; struct vm_page *p; - p = PHYS_TO_VM_PAGE(pmap_kextract(va)); + pa = pmap_kextract(va); + if (pa == 0) + panic("MemGuard detected double-free of %p", (void *)va); + p = PHYS_TO_VM_PAGE(pa); KASSERT(p->wire_count != 0 && p->queue == PQ_NONE, ("MEMGUARD: Expected wired page %p in vtomgfifo!", p)); return ((u_long *)&p->pageq.tqe_next); |