qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 3/3] hw/nvram: Fix Memory Leak in Xilinx ZynqMP eFuse device


From: Francisco Iglesias
Subject: Re: [PATCH 3/3] hw/nvram: Fix Memory Leak in Xilinx ZynqMP eFuse device
Date: Mon, 18 Oct 2021 13:22:13 +0200
User-agent: Mutt/1.10.1 (2018-07-13)

On [2021 Oct 15] Fri 13:35:32, Tong Ho wrote:
> Signed-off-by: Tong Ho <tong.ho@xilinx.com>

Reviewed-by: Francisco Iglesias <frasse.iglesias@gmail.com>

> ---
>  hw/nvram/xlnx-zynqmp-efuse.c | 18 ++++++++++++------
>  1 file changed, 12 insertions(+), 6 deletions(-)
> 
> diff --git a/hw/nvram/xlnx-zynqmp-efuse.c b/hw/nvram/xlnx-zynqmp-efuse.c
> index 1f87dbf988..228ba0bbfa 100644
> --- a/hw/nvram/xlnx-zynqmp-efuse.c
> +++ b/hw/nvram/xlnx-zynqmp-efuse.c
> @@ -434,11 +434,12 @@ static void zynqmp_efuse_pgm_addr_postw(RegisterInfo 
> *reg, uint64_t val64)
>      if (!errmsg) {
>          ARRAY_FIELD_DP32(s->regs, EFUSE_ISR, PGM_ERROR, 0);
>      } else {
> +        g_autofree char *path = object_get_canonical_path(OBJECT(s));
> +
>          ARRAY_FIELD_DP32(s->regs, EFUSE_ISR, PGM_ERROR, 1);
>          qemu_log_mask(LOG_GUEST_ERROR,
>                        "%s - eFuse write error: %s; addr=0x%x\n",
> -                      object_get_canonical_path(OBJECT(s)),
> -                      errmsg, (unsigned)val64);
> +                      path, errmsg, (unsigned)val64);
>      }
>  
>      ARRAY_FIELD_DP32(s->regs, EFUSE_ISR, PGM_DONE, 1);
> @@ -448,6 +449,7 @@ static void zynqmp_efuse_pgm_addr_postw(RegisterInfo 
> *reg, uint64_t val64)
>  static void zynqmp_efuse_rd_addr_postw(RegisterInfo *reg, uint64_t val64)
>  {
>      XlnxZynqMPEFuse *s = XLNX_ZYNQMP_EFUSE(reg->opaque);
> +    g_autofree char *path = NULL;
>  
>      /*
>       * Grant reads only to allowed bits; reference sources:
> @@ -538,10 +540,10 @@ static void zynqmp_efuse_rd_addr_postw(RegisterInfo 
> *reg, uint64_t val64)
>      return;
>  
>   denied:
> +    path = object_get_canonical_path(OBJECT(s));
>      qemu_log_mask(LOG_GUEST_ERROR,
>                    "%s: Denied efuse read from array %u, row %u\n",
> -                  object_get_canonical_path(OBJECT(s)),
> -                  efuse_ary, efuse_row);
> +                  path, efuse_ary, efuse_row);
>  
>      s->regs[R_EFUSE_RD_DATA] = 0;
>  
> @@ -731,9 +733,11 @@ static void zynqmp_efuse_reg_write(void *opaque, hwaddr 
> addr,
>      s = XLNX_ZYNQMP_EFUSE(dev);
>  
>      if (addr != A_WR_LOCK && s->regs[R_WR_LOCK]) {
> +        g_autofree char *path = object_get_canonical_path(OBJECT(s));
> +
>          qemu_log_mask(LOG_GUEST_ERROR,
>                        "%s[reg_0x%02lx]: Attempt to write locked register.\n",
> -                      object_get_canonical_path(OBJECT(s)), (long)addr);
> +                      path, (long)addr);
>      } else {
>          register_write_memory(opaque, addr, data, size);
>      }
> @@ -784,8 +788,10 @@ static void zynqmp_efuse_realize(DeviceState *dev, Error 
> **errp)
>      XlnxZynqMPEFuse *s = XLNX_ZYNQMP_EFUSE(dev);
>  
>      if (!s->efuse) {
> +        g_autofree char *path = object_get_canonical_path(OBJECT(s));
> +
>          error_setg(errp, "%s.efuse: link property not connected to 
> XLNX-EFUSE",
> -                   object_get_canonical_path(OBJECT(dev)));
> +                   path);
>          return;
>      }
>  
> -- 
> 2.25.1
> 
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]