On Mon, 12 Jul 2021 16:43:35 -0300
Daniel Henrique Barboza <danielhb413@gmail.com> wrote:
> The error_report() call in drc_unisolate_logical() is not considering
> that drc->dev->id can be NULL, and the underlying functions error_report()
> calls to do its job (vprintf(), g_strdup_printf() ...) has undefined
> behavior when trying to handle "%s" with NULL arguments.
>
> Besides, there is no utility into reporting that an unknown device was
> rejected by the guest.
>
> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
> ---
Reviewed-by: Greg Kurz <groug@kaod.org>
> hw/ppc/spapr_drc.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c
> index a2f2634601..a4d9496f76 100644
> --- a/hw/ppc/spapr_drc.c
> +++ b/hw/ppc/spapr_drc.c
> @@ -167,8 +167,11 @@ static uint32_t drc_unisolate_logical(SpaprDrc *drc)
> }
>
> drc->unplug_requested = false;
> - error_report("Device hotunplug rejected by the guest "
> - "for device %s", drc->dev->id);
> +
> + if (drc->dev->id) {
> + error_report("Device hotunplug rejected by the guest "
> + "for device %s", drc->dev->id);
> + }
>
> /*
> * TODO: send a QAPI DEVICE_UNPLUG_ERROR event when