diff mbox series

[RESEND,v2,6/7] blockdev: Fix a memleak in drive_backup_prepare()

Message ID 20201023061218.2080844-7-kuhn.chenqun@huawei.com
State New
Headers show
Series some memleak trivial patchs | expand

Commit Message

Chenqun (kuhn) Oct. 23, 2020, 6:12 a.m. UTC
From: Pan Nengyuan <pannengyuan@huawei.com>

'local_err' seems forgot to propagate in error path, it'll cause
a memleak. Fix it.

Reported-by: Euler Robot <euler.robot@huawei.com>
Signed-off-by: Pan Nengyuan <pannengyuan@huawei.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Li Qiang <liq3ea@gmail.com>
Signed-off-by: Chen Qun <kuhn.chenqun@huawei.com>
---
 blockdev.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Laurent Vivier Dec. 13, 2020, 5:50 p.m. UTC | #1
Le 23/10/2020 à 08:12, Chen Qun a écrit :
> From: Pan Nengyuan <pannengyuan@huawei.com>

> 

> 'local_err' seems forgot to propagate in error path, it'll cause

> a memleak. Fix it.

> 

> Reported-by: Euler Robot <euler.robot@huawei.com>

> Signed-off-by: Pan Nengyuan <pannengyuan@huawei.com>

> Reviewed-by: Kevin Wolf <kwolf@redhat.com>

> Reviewed-by: Li Qiang <liq3ea@gmail.com>

> Signed-off-by: Chen Qun <kuhn.chenqun@huawei.com>

> ---

>  blockdev.c | 1 +

>  1 file changed, 1 insertion(+)

> 

> diff --git a/blockdev.c b/blockdev.c

> index fe6fb5dc1d..6fd68f74f3 100644

> --- a/blockdev.c

> +++ b/blockdev.c

> @@ -1827,6 +1827,7 @@ static void drive_backup_prepare(BlkActionState *common, Error **errp)

>      if (set_backing_hd) {

>          bdrv_set_backing_hd(target_bs, source, &local_err);

>          if (local_err) {

> +            error_propagate(errp, local_err);

>              goto unref;

>          }

>      }

> 


Applied to my trivial-patches branch.

Thanks,
Laurent
diff mbox series

Patch

diff --git a/blockdev.c b/blockdev.c
index fe6fb5dc1d..6fd68f74f3 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -1827,6 +1827,7 @@  static void drive_backup_prepare(BlkActionState *common, Error **errp)
     if (set_backing_hd) {
         bdrv_set_backing_hd(target_bs, source, &local_err);
         if (local_err) {
+            error_propagate(errp, local_err);
             goto unref;
         }
     }