[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] Allow nested qemu_bh_poll() after BH deletion
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH] Allow nested qemu_bh_poll() after BH deletion |
Date: |
Wed, 15 Jun 2011 12:33:17 +0200 |
Without this, qemu segfaults when a BH handler first deletes its BH and
then calls another function which involves a nested qemu_bh_poll() call.
This can be reproduced by generating an I/O error (e.g. with blkdebug) on
an IDE device and using rerror/werror=stop to stop the VM. When continuing
the VM, qemu segfaults.
Signed-off-by: Kevin Wolf <address@hidden>
---
async.c | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/async.c b/async.c
index 57ac3a8..fd313df 100644
--- a/async.c
+++ b/async.c
@@ -137,11 +137,12 @@ QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque)
int qemu_bh_poll(void)
{
- QEMUBH *bh, **bhp;
+ QEMUBH *bh, **bhp, *next;
int ret;
ret = 0;
- for (bh = async_context->first_bh; bh; bh = bh->next) {
+ for (bh = async_context->first_bh; bh; bh = next) {
+ next = bh->next;
if (!bh->deleted && bh->scheduled) {
bh->scheduled = 0;
if (!bh->idle)
--
1.7.5.2
- [Qemu-devel] [PATCH] Allow nested qemu_bh_poll() after BH deletion,
Kevin Wolf <=