Skip to content

Commit 27fb78e

Browse files
committed
plugins: fix qemu_plugin_reset
34e5e1 refactored the plugin context initialization. After this change, tcg_ctx->plugin_insn is not reset inconditionnally anymore, but only if one plugin at least is active. When uninstalling the last plugin active, we stopped reinitializing tcg_ctx->plugin_insn, which leads to memory callbacks being emitted. This results in an error as they don't appear in a plugin op sequence as expected. The correct fix is to make sure we reset plugin translation variables after current block translation ends. This way, we can catch any potential misuse of those after a given block, in more than fixing the current bug. v2: do not reset tcg_ctx->plugin_tb as it gets reused between translations. Fixes: https://gitlab.com/qemu-project/qemu/-/issues/2570 Reviewed-by: Richard Henderson <[email protected]> Signed-off-by: Pierrick Bouvier <[email protected]>
1 parent f6d6a3e commit 27fb78e

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

accel/tcg/plugin-gen.c

+4
Original file line numberDiff line numberDiff line change
@@ -467,4 +467,8 @@ void plugin_gen_tb_end(CPUState *cpu, size_t num_insns)
467467

468468
/* inject the instrumentation at the appropriate places */
469469
plugin_gen_inject(ptb);
470+
471+
/* reset plugin translation state (plugin_tb is reused between blocks) */
472+
tcg_ctx->plugin_db = NULL;
473+
tcg_ctx->plugin_insn = NULL;
470474
}

0 commit comments

Comments
 (0)