2014-06-18 19:58:14

by Heinrich Schuchardt

[permalink] [raw]
Subject: [PATCH] drm/nouveau: avoid memory leak

If ttm_dma_tt_init fails memory is leaked.

Signed-off-by: Heinrich Schuchardt <[email protected]>
---
drivers/gpu/drm/nouveau/nouveau_sgdma.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_sgdma.c b/drivers/gpu/drm/nouveau/nouveau_sgdma.c
index a4d22e5..23d880b 100644
--- a/drivers/gpu/drm/nouveau/nouveau_sgdma.c
+++ b/drivers/gpu/drm/nouveau/nouveau_sgdma.c
@@ -109,7 +109,9 @@ nouveau_sgdma_create_ttm(struct ttm_bo_device *bdev,
else
nvbe->ttm.ttm.func = &nv50_sgdma_backend;

- if (ttm_dma_tt_init(&nvbe->ttm, bdev, size, page_flags, dummy_read_page))
+ if (ttm_dma_tt_init(&nvbe->ttm, bdev, size, page_flags, dummy_read_page)) {
+ kfree(nvbe);
return NULL;
+ }
return &nvbe->ttm.ttm;
}
--
2.0.0


2014-06-18 23:24:37

by Ben Skeggs

[permalink] [raw]
Subject: Re: [PATCH] drm/nouveau: avoid memory leak

----- Original Message -----
> From: "Heinrich Schuchardt" <[email protected]>
> To: "David Airlie" <[email protected]>
> Cc: "Ben Skeggs" <[email protected]>, [email protected], [email protected], "Heinrich
> Schuchardt" <[email protected]>
> Sent: Thursday, 19 June, 2014 5:57:47 AM
> Subject: [PATCH] drm/nouveau: avoid memory leak
>
> If ttm_dma_tt_init fails memory is leaked.
No, it's not. TTM calls the destroy function itself on failure.

Thanks,
Ben.
>
> Signed-off-by: Heinrich Schuchardt <[email protected]>
> ---
> drivers/gpu/drm/nouveau/nouveau_sgdma.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_sgdma.c
> b/drivers/gpu/drm/nouveau/nouveau_sgdma.c
> index a4d22e5..23d880b 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_sgdma.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_sgdma.c
> @@ -109,7 +109,9 @@ nouveau_sgdma_create_ttm(struct ttm_bo_device *bdev,
> else
> nvbe->ttm.ttm.func = &nv50_sgdma_backend;
>
> - if (ttm_dma_tt_init(&nvbe->ttm, bdev, size, page_flags, dummy_read_page))
> + if (ttm_dma_tt_init(&nvbe->ttm, bdev, size, page_flags, dummy_read_page)) {
> + kfree(nvbe);
> return NULL;
> + }
> return &nvbe->ttm.ttm;
> }
> --
> 2.0.0
>
>