Tao Su <tao1...@linux.intel.com> writes: > monitor_puts() doesn't check the monitor pointer, but do_inject_x86_mce() > may have a parameter with NULL monitor pointer. Check the monitor pointer > before calling monitor_puts(). > > Fixes: bf0c50d4aa85 (monitor: expose monitor_puts to rest of code) > Reviwed-by: Xiaoyao Li <xiaoyao...@intel.com> > Signed-off-by: Tao Su <tao1...@linux.intel.com> > --- > target/i386/helper.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/target/i386/helper.c b/target/i386/helper.c > index 2070dd0dda..a9ff830a17 100644 > --- a/target/i386/helper.c > +++ b/target/i386/helper.c > @@ -430,7 +430,8 @@ static void do_inject_x86_mce(CPUState *cs, > run_on_cpu_data data) > if (need_reset) { > emit_guest_memory_failure(MEMORY_FAILURE_ACTION_RESET, ar, > recursive); > - monitor_puts(params->mon, msg); > + if (params->mon) > + monitor_puts(params->mon, msg); > qemu_log_mask(CPU_LOG_RESET, "%s\n", msg); > qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); > return;
Could instead revert the broken part of commit bf0c50d4aa85: - monitor_puts(params->mon, msg); + monitor_printf(params->mon, "%s", msg); qemu_log_mask(CPU_LOG_RESET, "%s\n", msg); Then the fact that we send the same message to monitor and log is again more obvious. Either way: Reviewed-by: Markus Armbruster <arm...@redhat.com>