From 8e7ea1fc7dba75810b0d8c8a0fb46e0f9ddf16c3 Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Mon, 2 Dec 2002 01:12:05 +0000 Subject: MFi386 Hold the page queues lock around vm_page_unhold() in vunmapbuf(). Approved by: re (blanket) --- sys/alpha/alpha/vm_machdep.c | 2 ++ sys/ia64/ia64/vm_machdep.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/sys/alpha/alpha/vm_machdep.c b/sys/alpha/alpha/vm_machdep.c index 2f864388fc3b..09158d827dbf 100644 --- a/sys/alpha/alpha/vm_machdep.c +++ b/sys/alpha/alpha/vm_machdep.c @@ -393,6 +393,7 @@ vunmapbuf(bp) if ((bp->b_flags & B_PHYS) == 0) panic("vunmapbuf"); + vm_page_lock_queues(); for (addr = (caddr_t)trunc_page(bp->b_data); addr < bp->b_data + bp->b_bufsize; addr += PAGE_SIZE) { @@ -400,6 +401,7 @@ vunmapbuf(bp) pmap_kremove((vm_offset_t) addr); vm_page_unhold(PHYS_TO_VM_PAGE(pa)); } + vm_page_unlock_queues(); bp->b_data = bp->b_saveaddr; } diff --git a/sys/ia64/ia64/vm_machdep.c b/sys/ia64/ia64/vm_machdep.c index 7bfdd76a98d2..d4a8c64890ec 100644 --- a/sys/ia64/ia64/vm_machdep.c +++ b/sys/ia64/ia64/vm_machdep.c @@ -406,6 +406,7 @@ vunmapbuf(bp) if ((bp->b_flags & B_PHYS) == 0) panic("vunmapbuf"); + vm_page_lock_queues(); for (addr = (caddr_t)trunc_page(bp->b_data); addr < bp->b_data + bp->b_bufsize; addr += PAGE_SIZE) { @@ -413,6 +414,7 @@ vunmapbuf(bp) pmap_kremove((vm_offset_t) addr); vm_page_unhold(PHYS_TO_VM_PAGE(pa)); } + vm_page_unlock_queues(); bp->b_data = bp->b_saveaddr; } -- cgit v1.3