From fec299954f0c22123d0dd5d67613bf9f633b5fa0 Mon Sep 17 00:00:00 2001 From: Preetha Chandru R Date: Thu, 16 Aug 2018 14:15:34 +0530 Subject: gpu: nvgpu: fix memory leak in failure condition This change frees tsg_private structure in nvgpu_ioctl_tsg_open() when gk20a_busy() fails and avoids a memory leak. Bug 2268533 JIRA NVGPU-1016 Change-Id: I0428cc40e042b881537f7cb597e5ebeaad815b32 Signed-off-by: Preetha Chandru R Reviewed-on: https://git-master.nvidia.com/r/1800955 Reviewed-by: Alex Waterman GVS: Gerrit_Virtual_Submit Reviewed-by: Seshendra Gadagottu Reviewed-by: Vijayakumar Subbu Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/os/linux/ioctl_tsg.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'drivers/gpu/nvgpu/os/linux/ioctl_tsg.c') diff --git a/drivers/gpu/nvgpu/os/linux/ioctl_tsg.c b/drivers/gpu/nvgpu/os/linux/ioctl_tsg.c index 5d22d082..f7d20f34 100644 --- a/drivers/gpu/nvgpu/os/linux/ioctl_tsg.c +++ b/drivers/gpu/nvgpu/os/linux/ioctl_tsg.c @@ -402,15 +402,14 @@ int nvgpu_ioctl_tsg_open(struct gk20a *g, struct file *filp) err = gk20a_busy(g); if (err) { nvgpu_err(g, "failed to power on, %d", err); - goto free_ref; + goto free_mem; } tsg = gk20a_tsg_open(g, nvgpu_current_pid(g)); gk20a_idle(g); if (!tsg) { - nvgpu_kfree(g, priv); err = -ENOMEM; - goto free_ref; + goto free_mem; } priv->g = g; @@ -421,6 +420,8 @@ int nvgpu_ioctl_tsg_open(struct gk20a *g, struct file *filp) return 0; +free_mem: + nvgpu_kfree(g, priv); free_ref: gk20a_put(g); return err; -- cgit v1.2.2