diff mbox

9pfs: fix potential host memory leak in v9fs_read

Message ID 57ea5f06.821e6b0a.4ee38.31ea@mx.google.com
State New
Headers show

Commit Message

Li Qiang Sept. 27, 2016, 11:58 a.m. UTC
From: Li Qiang <liqiang6-s@360.cn>

In 9pfs read dispatch function, it doesn't free two QEMUIOVector
object thus causing potential memory leak. This patch avoid this.

Signed-off-by: Li Qiang <liqiang6-s@360.cn>
---
 hw/9pfs/9p.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Greg Kurz Sept. 27, 2016, 3:41 p.m. UTC | #1
On Tue, 27 Sep 2016 04:58:46 -0700
Li Qiang <liq3ea@gmail.com> wrote:

> From: Li Qiang <liqiang6-s@360.cn>
> 
> In 9pfs read dispatch function, it doesn't free two QEMUIOVector
> object thus causing potential memory leak. This patch avoid this.
> 
> Signed-off-by: Li Qiang <liqiang6-s@360.cn>
> ---

When you post an updated version of a patch, you should:

- add a version in the subject

   [PATCH v2] 9pfs: fix potential host memory leak in v9fs_read

- list the changes since the previous version under the --- after
  your Signed-off-by


Anyway, the change is ok, I'll push this to my tree.

Thanks.

--
Greg

>  hw/9pfs/9p.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c
> index 119ee58..543a791 100644
> --- a/hw/9pfs/9p.c
> +++ b/hw/9pfs/9p.c
> @@ -1826,14 +1826,15 @@ static void v9fs_read(void *opaque)
>              if (len < 0) {
>                  /* IO error return the error */
>                  err = len;
> -                goto out;
> +                goto out_free_iovec;
>              }
>          } while (count < max_count && len > 0);
>          err = pdu_marshal(pdu, offset, "d", count);
>          if (err < 0) {
> -            goto out;
> +            goto out_free_iovec;
>          }
>          err += offset + count;
> +out_free_iovec:
>          qemu_iovec_destroy(&qiov);
>          qemu_iovec_destroy(&qiov_full);
>      } else if (fidp->fid_type == P9_FID_XATTR) {
Greg Kurz Oct. 10, 2016, 11:16 a.m. UTC | #2
On Tue, 27 Sep 2016 04:58:46 -0700
Li Qiang <liq3ea@gmail.com> wrote:

> From: Li Qiang <liqiang6-s@360.cn>
> 
> In 9pfs read dispatch function, it doesn't free two QEMUIOVector
> object thus causing potential memory leak. This patch avoid this.
> 
> Signed-off-by: Li Qiang <liqiang6-s@360.cn>
> ---

Reviewed-by: Greg Kurz <groug@kaod.org>

>  hw/9pfs/9p.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c
> index 119ee58..543a791 100644
> --- a/hw/9pfs/9p.c
> +++ b/hw/9pfs/9p.c
> @@ -1826,14 +1826,15 @@ static void v9fs_read(void *opaque)
>              if (len < 0) {
>                  /* IO error return the error */
>                  err = len;
> -                goto out;
> +                goto out_free_iovec;
>              }
>          } while (count < max_count && len > 0);
>          err = pdu_marshal(pdu, offset, "d", count);
>          if (err < 0) {
> -            goto out;
> +            goto out_free_iovec;
>          }
>          err += offset + count;
> +out_free_iovec:
>          qemu_iovec_destroy(&qiov);
>          qemu_iovec_destroy(&qiov_full);
>      } else if (fidp->fid_type == P9_FID_XATTR) {
diff mbox

Patch

diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c
index 119ee58..543a791 100644
--- a/hw/9pfs/9p.c
+++ b/hw/9pfs/9p.c
@@ -1826,14 +1826,15 @@  static void v9fs_read(void *opaque)
             if (len < 0) {
                 /* IO error return the error */
                 err = len;
-                goto out;
+                goto out_free_iovec;
             }
         } while (count < max_count && len > 0);
         err = pdu_marshal(pdu, offset, "d", count);
         if (err < 0) {
-            goto out;
+            goto out_free_iovec;
         }
         err += offset + count;
+out_free_iovec:
         qemu_iovec_destroy(&qiov);
         qemu_iovec_destroy(&qiov_full);
     } else if (fidp->fid_type == P9_FID_XATTR) {