qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] target/i386: Check NULL monitor pointer when injecting MCE
@ 2024-03-20  5:21 Tao Su
  2024-03-20  6:02 ` Markus Armbruster
  0 siblings, 1 reply; 5+ messages in thread
From: Tao Su @ 2024-03-20  5:21 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, xiaoyao.li, alex.bennee, tao1.su

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.li@intel.com>
Signed-off-by: Tao Su <tao1.su@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;
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] target/i386: Check NULL monitor pointer when injecting MCE
  2024-03-20  5:21 [PATCH] target/i386: Check NULL monitor pointer when injecting MCE Tao Su
@ 2024-03-20  6:02 ` Markus Armbruster
  2024-03-20  7:17   ` Philippe Mathieu-Daudé
  2024-03-20  7:44   ` Tao Su
  0 siblings, 2 replies; 5+ messages in thread
From: Markus Armbruster @ 2024-03-20  6:02 UTC (permalink / raw)
  To: Tao Su; +Cc: qemu-devel, pbonzini, xiaoyao.li, alex.bennee

Tao Su <tao1.su@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.li@intel.com>
> Signed-off-by: Tao Su <tao1.su@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 <armbru@redhat.com>



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] target/i386: Check NULL monitor pointer when injecting MCE
  2024-03-20  6:02 ` Markus Armbruster
@ 2024-03-20  7:17   ` Philippe Mathieu-Daudé
  2024-03-20  7:53     ` Tao Su
  2024-03-20  7:44   ` Tao Su
  1 sibling, 1 reply; 5+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-03-20  7:17 UTC (permalink / raw)
  To: Markus Armbruster, Tao Su; +Cc: qemu-devel, pbonzini, xiaoyao.li, alex.bennee

Hi Tao,

On 20/3/24 07:02, Markus Armbruster wrote:
> Tao Su <tao1.su@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.li@intel.com>
>> Signed-off-by: Tao Su <tao1.su@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)

Missing braces, see QEMU coding style:
https://www.qemu.org/docs/master/devel/style.html#block-structure

>> +                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 <armbru@redhat.com>
> 
> 



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] target/i386: Check NULL monitor pointer when injecting MCE
  2024-03-20  6:02 ` Markus Armbruster
  2024-03-20  7:17   ` Philippe Mathieu-Daudé
@ 2024-03-20  7:44   ` Tao Su
  1 sibling, 0 replies; 5+ messages in thread
From: Tao Su @ 2024-03-20  7:44 UTC (permalink / raw)
  To: Markus Armbruster; +Cc: qemu-devel, pbonzini, xiaoyao.li, alex.bennee

On Wed, Mar 20, 2024 at 07:02:46AM +0100, Markus Armbruster wrote:
> Tao Su <tao1.su@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.li@intel.com>
> > Signed-off-by: Tao Su <tao1.su@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.

Good suggestion. I will send a v2 with this change.

> 
> Either way:
> Reviewed-by: Markus Armbruster <armbru@redhat.com>

Thanks for review!

> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] target/i386: Check NULL monitor pointer when injecting MCE
  2024-03-20  7:17   ` Philippe Mathieu-Daudé
@ 2024-03-20  7:53     ` Tao Su
  0 siblings, 0 replies; 5+ messages in thread
From: Tao Su @ 2024-03-20  7:53 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Markus Armbruster, qemu-devel, pbonzini, xiaoyao.li, alex.bennee

On Wed, Mar 20, 2024 at 08:17:36AM +0100, Philippe Mathieu-Daudé wrote:
> Hi Tao,
> 
> On 20/3/24 07:02, Markus Armbruster wrote:
> > Tao Su <tao1.su@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.li@intel.com>
> > > Signed-off-by: Tao Su <tao1.su@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)
> 
> Missing braces, see QEMU coding style:
> https://www.qemu.org/docs/master/devel/style.html#block-structure

Yes, I prefer to revert the broken part.

Anyway, I got this point and will always pay attention to it, thanks for
reminding.

> 
> > > +                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 <armbru@redhat.com>
> > 
> > 
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-03-20  7:56 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-20  5:21 [PATCH] target/i386: Check NULL monitor pointer when injecting MCE Tao Su
2024-03-20  6:02 ` Markus Armbruster
2024-03-20  7:17   ` Philippe Mathieu-Daudé
2024-03-20  7:53     ` Tao Su
2024-03-20  7:44   ` Tao Su

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).