[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 24/33] net/colo-compare.c: Create event_bh with the right AioConte
From: |
Jason Wang |
Subject: |
[PULL 24/33] net/colo-compare.c: Create event_bh with the right AioContext |
Date: |
Tue, 16 Jun 2020 14:45:35 +0800 |
From: Lukas Straub <lukasstraub2@web.de>
qemu_bh_new will set the bh to be executed in the main
loop. This causes crashes as colo_compare_handle_event assumes
that it has exclusive access the queues, which are also
concurrently accessed in the iothread.
Create the bh with the AioContext of the iothread to fulfill
these assumptions and fix the crashes. This is safe, because
the bh already takes the appropriate locks.
Signed-off-by: Lukas Straub <lukasstraub2@web.de>
Reviewed-by: Zhang Chen <chen.zhang@intel.com>
Reviewed-by: Derek Su <dereksu@qnap.com>
Tested-by: Derek Su <dereksu@qnap.com>
Signed-off-by: Zhang Chen <chen.zhang@intel.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
---
net/colo-compare.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/net/colo-compare.c b/net/colo-compare.c
index c07e7c1..e557da7 100644
--- a/net/colo-compare.c
+++ b/net/colo-compare.c
@@ -890,6 +890,7 @@ static void colo_compare_handle_event(void *opaque)
static void colo_compare_iothread(CompareState *s)
{
+ AioContext *ctx = iothread_get_aio_context(s->iothread);
object_ref(OBJECT(s->iothread));
s->worker_context = iothread_get_g_main_context(s->iothread);
@@ -906,7 +907,7 @@ static void colo_compare_iothread(CompareState *s)
}
colo_compare_timer_init(s);
- s->event_bh = qemu_bh_new(colo_compare_handle_event, s);
+ s->event_bh = aio_bh_new(ctx, colo_compare_handle_event, s);
}
static char *compare_get_pri_indev(Object *obj, Error **errp)
--
2.5.0
- [PULL 12/33] net: cadence_gem: Fix the queue address update during wrap around, (continued)
- [PULL 12/33] net: cadence_gem: Fix the queue address update during wrap around, Jason Wang, 2020/06/16
- [PULL 13/33] net: cadence_gem: Fix irq update w.r.t queue, Jason Wang, 2020/06/16
- [PULL 15/33] net: cadence_gem: Set ISR according to queue in use, Jason Wang, 2020/06/16
- [PULL 17/33] net: cadence_gem: Fix up code style, Jason Wang, 2020/06/16
- [PULL 18/33] net: cadence_gem: Add support for jumbo frames, Jason Wang, 2020/06/16
- [PULL 19/33] net: cadnece_gem: Update irq_read_clear field of designcfg_debug1 reg, Jason Wang, 2020/06/16
- [PULL 20/33] net: cadence_gem: Update the reset value for interrupt mask register, Jason Wang, 2020/06/16
- [PULL 22/33] net: cadence_gem: Fix RX address filtering, Jason Wang, 2020/06/16
- [PULL 21/33] net: cadence_gem: TX_LAST bit should be set by guest, Jason Wang, 2020/06/16
- [PULL 23/33] net: use peer when purging queue in qemu_flush_or_purge_queue_packets(), Jason Wang, 2020/06/16
- [PULL 24/33] net/colo-compare.c: Create event_bh with the right AioContext,
Jason Wang <=
- [PULL 27/33] net/colo-compare.c: Only hexdump packets if tracing is enabled, Jason Wang, 2020/06/16
- [PULL 25/33] chardev/char.c: Use qemu_co_sleep_ns if in coroutine, Jason Wang, 2020/06/16
- [PULL 26/33] net/colo-compare.c: Fix deadlock in compare_chr_send, Jason Wang, 2020/06/16
- [PULL 28/33] net/colo-compare.c: Check that colo-compare is active, Jason Wang, 2020/06/16
- [PULL 29/33] net/colo-compare.c: Correct ordering in complete and finalize, Jason Wang, 2020/06/16
- [PULL 30/33] colo-compare: Fix memory leak in packet_enqueue(), Jason Wang, 2020/06/16
- [PULL 31/33] hw/net/e1000e: Do not abort() on invalid PSRCTL register value, Jason Wang, 2020/06/16
- [PULL 33/33] net: Drop the NetLegacy structure, always use Netdev instead, Jason Wang, 2020/06/16
- [PULL 32/33] net: Drop the legacy "name" parameter from the -net option, Jason Wang, 2020/06/16
- Re: [PULL 00/33] Net patches, Peter Maydell, 2020/06/16