Navid Emamdoost
2019-Oct-21 21:14 UTC
[Nouveau] [PATCH] drm/nouveau: Fix memory leak in nouveau_bo_alloc
In the implementation of nouveau_bo_alloc() if it fails to determine the target page size via pi, then the allocated memory for nvbo should be released. Fixes: 019cbd4a4feb ("drm/nouveau: Initialize GEM object before TTM object") Signed-off-by: Navid Emamdoost <navid.emamdoost at gmail.com> --- drivers/gpu/drm/nouveau/nouveau_bo.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c index f8015e0318d7..18857cf44068 100644 --- a/drivers/gpu/drm/nouveau/nouveau_bo.c +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c @@ -276,8 +276,10 @@ nouveau_bo_alloc(struct nouveau_cli *cli, u64 *size, int *align, u32 flags, break; } - if (WARN_ON(pi < 0)) + if (WARN_ON(pi < 0)) { + kfree(nvbo); return ERR_PTR(-EINVAL); + } /* Disable compression if suitable settings couldn't be found. */ if (nvbo->comp && !vmm->page[pi].comp) { -- 2.17.1
Markus Elfring
2019-Oct-22 09:40 UTC
[Nouveau] [PATCH] drm/nouveau: Fix memory leak in nouveau_bo_alloc
> +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c > @@ -276,8 +276,10 @@ nouveau_bo_alloc(struct nouveau_cli *cli, u64 *size, int *align, u32 flags, > break; > } > > - if (WARN_ON(pi < 0)) > + if (WARN_ON(pi < 0)) { > + kfree(nvbo); > return ERR_PTR(-EINVAL); > + } > > /* Disable compression if suitable settings couldn't be found. */ > if (nvbo->comp && !vmm->page[pi].comp) {This addition looks correct. But I would prefer to move such exception handling code to the end of this function implementation so that duplicate source code will be reduced. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/coding-style.rst?id=7d194c2100ad2a6dded545887d02754948ca5241#n450 Regards, Markus
Navid Emamdoost
2019-Nov-21 18:09 UTC
[Nouveau] [PATCH] drm/nouveau: Fix memory leak in nouveau_bo_alloc
On Mon, Oct 21, 2019 at 4:14 PM Navid Emamdoost <navid.emamdoost at gmail.com> wrote:> > In the implementation of nouveau_bo_alloc() if it fails to determine the > target page size via pi, then the allocated memory for nvbo should be > released. > > Fixes: 019cbd4a4feb ("drm/nouveau: Initialize GEM object before TTM object") > Signed-off-by: Navid Emamdoost <navid.emamdoost at gmail.com>Would you please review this patch? Thanks, Navid.> --- > drivers/gpu/drm/nouveau/nouveau_bo.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c > index f8015e0318d7..18857cf44068 100644 > --- a/drivers/gpu/drm/nouveau/nouveau_bo.c > +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c > @@ -276,8 +276,10 @@ nouveau_bo_alloc(struct nouveau_cli *cli, u64 *size, int *align, u32 flags, > break; > } > > - if (WARN_ON(pi < 0)) > + if (WARN_ON(pi < 0)) { > + kfree(nvbo); > return ERR_PTR(-EINVAL); > + } > > /* Disable compression if suitable settings couldn't be found. */ > if (nvbo->comp && !vmm->page[pi].comp) { > -- > 2.17.1 >-- Navid.
Navid Emamdoost
2019-Nov-26 17:50 UTC
[Nouveau] [PATCH] drm/nouveau: Fix memory leak in nouveau_bo_alloc
ping... On Thu, Nov 21, 2019 at 12:09 PM Navid Emamdoost <navid.emamdoost at gmail.com> wrote:> > On Mon, Oct 21, 2019 at 4:14 PM Navid Emamdoost > <navid.emamdoost at gmail.com> wrote: > > > > In the implementation of nouveau_bo_alloc() if it fails to determine the > > target page size via pi, then the allocated memory for nvbo should be > > released. > > > > Fixes: 019cbd4a4feb ("drm/nouveau: Initialize GEM object before TTM object") > > Signed-off-by: Navid Emamdoost <navid.emamdoost at gmail.com> > > Would you please review this patch? > > > Thanks, > Navid. > > > --- > > drivers/gpu/drm/nouveau/nouveau_bo.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c > > index f8015e0318d7..18857cf44068 100644 > > --- a/drivers/gpu/drm/nouveau/nouveau_bo.c > > +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c > > @@ -276,8 +276,10 @@ nouveau_bo_alloc(struct nouveau_cli *cli, u64 *size, int *align, u32 flags, > > break; > > } > > > > - if (WARN_ON(pi < 0)) > > + if (WARN_ON(pi < 0)) { > > + kfree(nvbo); > > return ERR_PTR(-EINVAL); > > + } > > > > /* Disable compression if suitable settings couldn't be found. */ > > if (nvbo->comp && !vmm->page[pi].comp) { > > -- > > 2.17.1 > > > > > -- > Navid.-- Navid.
Possibly Parallel Threads
- [PATCH] drm/nouveau: Fix memory leak in nouveau_bo_alloc
- [PATCH] drm/nouveau: Fix memory leak in nouveau_bo_alloc
- [PATCH 0/4] drm/nouveau: Miscellaneous fixes
- [PATCH] drm/nouveau: add the missed kfree() for nouveau_bo_alloc()
- [PATCH] drm/nouveau: Fix memory leak in nouveau_bo_alloc