diff mbox series

spapr: Fix memory leak in h_client_architecture_support()

Message ID 158481206205.336182.16106097429336044843.stgit@bahia.lan (mailing list archive)
State New, archived
Headers show
Series spapr: Fix memory leak in h_client_architecture_support() | expand

Commit Message

Greg Kurz March 21, 2020, 5:34 p.m. UTC
This is the only error path that needs to free the previously allocated
ov1.

Reported-by: Coverity (CID 1421924)
Fixes: cbd0d7f36322 "spapr: Fail CAS if option vector table cannot be parsed"
Signed-off-by: Greg Kurz <groug@kaod.org>
---
 hw/ppc/spapr_hcall.c |    1 +
 1 file changed, 1 insertion(+)

Comments

Philippe Mathieu-Daudé March 21, 2020, 6:06 p.m. UTC | #1
On 3/21/20 6:34 PM, Greg Kurz wrote:
> This is the only error path that needs to free the previously allocated
> ov1.
> 
> Reported-by: Coverity (CID 1421924)
> Fixes: cbd0d7f36322 "spapr: Fail CAS if option vector table cannot be parsed"
> Signed-off-by: Greg Kurz <groug@kaod.org>
> ---
>   hw/ppc/spapr_hcall.c |    1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c
> index 40c86e91eb89..0d50fc911790 100644
> --- a/hw/ppc/spapr_hcall.c
> +++ b/hw/ppc/spapr_hcall.c
> @@ -1726,6 +1726,7 @@ static target_ulong h_client_architecture_support(PowerPCCPU *cpu,
>       }
>       ov5_guest = spapr_ovec_parse_vector(ov_table, 5);
>       if (!ov5_guest) {
> +        spapr_ovec_cleanup(ov1_guest);

Quicker than using g_autoptr(), so for 5.0:

Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>

>           warn_report("guest didn't provide option vector 5");
>           return H_PARAMETER;
>       }
>
David Gibson March 22, 2020, 5:32 a.m. UTC | #2
On Sat, Mar 21, 2020 at 06:34:22PM +0100, Greg Kurz wrote:
> This is the only error path that needs to free the previously allocated
> ov1.
> 
> Reported-by: Coverity (CID 1421924)
> Fixes: cbd0d7f36322 "spapr: Fail CAS if option vector table cannot be parsed"
> Signed-off-by: Greg Kurz <groug@kaod.org>

Applied to ppc-forr-5.0.

> ---
>  hw/ppc/spapr_hcall.c |    1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c
> index 40c86e91eb89..0d50fc911790 100644
> --- a/hw/ppc/spapr_hcall.c
> +++ b/hw/ppc/spapr_hcall.c
> @@ -1726,6 +1726,7 @@ static target_ulong h_client_architecture_support(PowerPCCPU *cpu,
>      }
>      ov5_guest = spapr_ovec_parse_vector(ov_table, 5);
>      if (!ov5_guest) {
> +        spapr_ovec_cleanup(ov1_guest);
>          warn_report("guest didn't provide option vector 5");
>          return H_PARAMETER;
>      }
>
diff mbox series

Patch

diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c
index 40c86e91eb89..0d50fc911790 100644
--- a/hw/ppc/spapr_hcall.c
+++ b/hw/ppc/spapr_hcall.c
@@ -1726,6 +1726,7 @@  static target_ulong h_client_architecture_support(PowerPCCPU *cpu,
     }
     ov5_guest = spapr_ovec_parse_vector(ov_table, 5);
     if (!ov5_guest) {
+        spapr_ovec_cleanup(ov1_guest);
         warn_report("guest didn't provide option vector 5");
         return H_PARAMETER;
     }