summaryrefslogtreecommitdiffstats
path: root/sys/uvm/uvm_pdaemon.c
diff options
context:
space:
mode:
authorart <art@openbsd.org>2002-05-24 13:10:52 +0000
committerart <art@openbsd.org>2002-05-24 13:10:52 +0000
commit86d3bebf4ac5a1c3224ab6b783e92c5dd05bbe22 (patch)
tree5d9c8a9936c8fa365b1ce1197123b93da7b0e98b /sys/uvm/uvm_pdaemon.c
parentprotect biodone with splbio. (diff)
downloadwireguard-openbsd-86d3bebf4ac5a1c3224ab6b783e92c5dd05bbe22.tar.xz
wireguard-openbsd-86d3bebf4ac5a1c3224ab6b783e92c5dd05bbe22.zip
Make sure that b_iodone handlers are called at splbio (and splassert(IPL_BIO) in all known callers, just to make sure).
Diffstat (limited to 'sys/uvm/uvm_pdaemon.c')
-rw-r--r--sys/uvm/uvm_pdaemon.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/uvm/uvm_pdaemon.c b/sys/uvm/uvm_pdaemon.c
index dfa77ec9949..e011f925412 100644
--- a/sys/uvm/uvm_pdaemon.c
+++ b/sys/uvm/uvm_pdaemon.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_pdaemon.c,v 1.24 2002/03/14 01:27:18 millert Exp $ */
+/* $OpenBSD: uvm_pdaemon.c,v 1.25 2002/05/24 13:10:53 art Exp $ */
/* $NetBSD: uvm_pdaemon.c,v 1.23 2000/08/20 10:24:14 bjh21 Exp $ */
/*
@@ -334,7 +334,9 @@ uvm_aiodone_daemon(void *arg)
uvmexp.paging -= bp->b_bufsize >> PAGE_SHIFT;
}
nbp = TAILQ_NEXT(bp, b_freelist);
+ s = splbio(); /* b_iodone must by called at splbio */
(*bp->b_iodone)(bp);
+ splx(s);
bp = nbp;
}
if (free <= uvmexp.reserve_kernel) {