Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8ed160d8 authored by Harshdeep Dhatt's avatar Harshdeep Dhatt Committed by Gerrit - the friendly Code Review server
Browse files

msm: kgsl: Fix context leak in aux_command ioctl



Currently, after timeline drawobj creation it is not
immediately added to local drawobj list as a result
if kgsl_drawobj_add_timeline fails this drawobj is
leaked. As the timeline drawobj upon creation takes
a refcount on the context this leak also results in
context leak. Fix this by adding timeline drawobj to
local drawobj list immediately after creation.

Change-Id: I30f85506595ad7a7c54e82a7e850c96e7cdcbefd
Signed-off-by: default avatarHarshdeep Dhatt <hdhatt@codeaurora.org>
Signed-off-by: default avatarDeepak Kumar <dkumar@codeaurora.org>
parent 09f4de94
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2023,12 +2023,12 @@ long kgsl_ioctl_gpu_aux_command(struct kgsl_device_private *dev_priv,
				goto err;
			}

			drawobjs[index++] = DRAWOBJ(timelineobj);

			ret = kgsl_drawobj_add_timeline(dev_priv, timelineobj,
				u64_to_user_ptr(generic.priv), generic.size);
			if (ret)
				goto err;

			drawobjs[index++] = DRAWOBJ(timelineobj);
		} else {
			ret = -EINVAL;
			goto err;
+1 −0
Original line number Diff line number Diff line
@@ -900,6 +900,7 @@ int kgsl_drawobj_add_timeline(struct kgsl_device_private *dev_priv,
		kgsl_timeline_put(timelineobj->timelines[i].timeline);

	kvfree(timelineobj->timelines);
	timelineobj->timelines = NULL;
	return ret;
}