Message ID | 20230117035701.168514-4-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | tests: Fix some deadlocks | expand |
Richard Henderson <richard.henderson@linaro.org> writes: > Rather than iterate over all plugins for all events, > iterate over plugins that have registered a given event. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Queued to plugins/next, thanks.
diff --git a/plugins/core.c b/plugins/core.c index 35aca0266d..f22f8edc74 100644 --- a/plugins/core.c +++ b/plugins/core.c @@ -509,9 +509,10 @@ void qemu_plugin_user_exit(void) /* un-register all callbacks except the final AT_EXIT one */ for (ev = 0; ev < QEMU_PLUGIN_EV_MAX; ev++) { if (ev != QEMU_PLUGIN_EV_ATEXIT) { - struct qemu_plugin_ctx *ctx; - QTAILQ_FOREACH(ctx, &plugin.ctxs, entry) { - plugin_unregister_cb__locked(ctx, ev); + struct qemu_plugin_cb *cb, *next; + + QLIST_FOREACH_SAFE_RCU(cb, &plugin.cb_lists[ev], entry, next) { + plugin_unregister_cb__locked(cb->ctx, ev); } } }
Rather than iterate over all plugins for all events, iterate over plugins that have registered a given event. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- plugins/core.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)