From: Richard Henderson Date: Tue, 24 Jan 2023 18:01:27 +0000 (+0000) Subject: plugins: Iterate on cb_lists in qemu_plugin_user_exit X-Git-Tag: xenpvh-tag~28^2~1 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=f45549233f67e5fd3038d2c886ef7de876c8ff01;p=users%2Fdwmw2%2Fqemu.git plugins: Iterate on cb_lists in qemu_plugin_user_exit Rather than iterate over all plugins for all events, iterate over plugins that have registered a given event. Signed-off-by: Richard Henderson Message-Id: <20230117035701.168514-4-richard.henderson@linaro.org> Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée Message-Id: <20230124180127.1881110-36-alex.bennee@linaro.org> --- diff --git a/plugins/core.c b/plugins/core.c index 728bacef95..e04ffa1ba4 100644 --- a/plugins/core.c +++ b/plugins/core.c @@ -514,9 +514,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); } } }