From: Dan Carpenter Date: Fri, 20 Mar 2020 13:23:34 +0000 (+0300) Subject: drm/gem: Fix a leak in drm_gem_objects_lookup() X-Git-Tag: v5.15~303^2~28^2~2791 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ec0bb482de0ad5e4aba2a4537ea53eaeb77d11a6;p=platform%2Fkernel%2Flinux-starfive.git drm/gem: Fix a leak in drm_gem_objects_lookup() If the "handles" allocation or the copy_from_user() fails then we leak "objs". It's supposed to be freed in panfrost_job_cleanup(). Fixes: c117aa4d8701 ("drm: Add a drm_gem_objects_lookup helper") Signed-off-by: Dan Carpenter Signed-off-by: Emil Velikov Link: https://patchwork.freedesktop.org/patch/msgid/20200320132334.GC95012@mwanda --- diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index 7bf628e13023..d6ef48bc7a7b 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c @@ -709,6 +709,8 @@ int drm_gem_objects_lookup(struct drm_file *filp, void __user *bo_handles, if (!objs) return -ENOMEM; + *objs_out = objs; + handles = kvmalloc_array(count, sizeof(u32), GFP_KERNEL); if (!handles) { ret = -ENOMEM; @@ -722,8 +724,6 @@ int drm_gem_objects_lookup(struct drm_file *filp, void __user *bo_handles, } ret = objects_lookup(filp, handles, count, objs); - *objs_out = objs; - out: kvfree(handles); return ret;