[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL V2 24/33] net/colo-compare.c: Create event_bh with the right AioCo
From: |
Jason Wang |
Subject: |
[PULL V2 24/33] net/colo-compare.c: Create event_bh with the right AioContext |
Date: |
Thu, 18 Jun 2020 21:21:39 +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 V2 14/33] net: cadence_gem: Define access permission for interrupt registers, (continued)
- [PULL V2 14/33] net: cadence_gem: Define access permission for interrupt registers, Jason Wang, 2020/06/18
- [PULL V2 15/33] net: cadence_gem: Set ISR according to queue in use, Jason Wang, 2020/06/18
- [PULL V2 16/33] net: cadence_gem: Move tx/rx packet buffert to CadenceGEMState, Jason Wang, 2020/06/18
- [PULL V2 18/33] net: cadence_gem: Add support for jumbo frames, Jason Wang, 2020/06/18
- [PULL V2 17/33] net: cadence_gem: Fix up code style, Jason Wang, 2020/06/18
- [PULL V2 20/33] net: cadence_gem: Update the reset value for interrupt mask register, Jason Wang, 2020/06/18
- [PULL V2 19/33] net: cadnece_gem: Update irq_read_clear field of designcfg_debug1 reg, Jason Wang, 2020/06/18
- [PULL V2 21/33] net: cadence_gem: TX_LAST bit should be set by guest, Jason Wang, 2020/06/18
- [PULL V2 22/33] net: cadence_gem: Fix RX address filtering, Jason Wang, 2020/06/18
- [PULL V2 23/33] net: use peer when purging queue in qemu_flush_or_purge_queue_packets(), Jason Wang, 2020/06/18
- [PULL V2 24/33] net/colo-compare.c: Create event_bh with the right AioContext,
Jason Wang <=
- [PULL V2 25/33] chardev/char.c: Use qemu_co_sleep_ns if in coroutine, Jason Wang, 2020/06/18
- [PULL V2 26/33] net/colo-compare.c: Fix deadlock in compare_chr_send, Jason Wang, 2020/06/18
- [PULL V2 27/33] net/colo-compare.c: Only hexdump packets if tracing is enabled, Jason Wang, 2020/06/18
- [PULL V2 28/33] net/colo-compare.c: Check that colo-compare is active, Jason Wang, 2020/06/18
- [PULL V2 29/33] net/colo-compare.c: Correct ordering in complete and finalize, Jason Wang, 2020/06/18
- [PULL V2 31/33] hw/net/e1000e: Do not abort() on invalid PSRCTL register value, Jason Wang, 2020/06/18
- [PULL V2 32/33] net: Drop the legacy "name" parameter from the -net option, Jason Wang, 2020/06/18
- [PULL V2 33/33] net: Drop the NetLegacy structure, always use Netdev instead, Jason Wang, 2020/06/18
- [PULL V2 30/33] colo-compare: Fix memory leak in packet_enqueue(), Jason Wang, 2020/06/18