gpu: nvgpu: fix memleak when failed to power on gpu

nvmemleak detected memleak in the error path of gk20a_ctrl_dev_open.

nvkmemleak: Writing 'scan' to /sys/kernel/debug/kmemleak.
unreferenced object 0xffffffc0a6fffa80 (size 128):
  comm "nvgpu_gpu_zcull", pid 9675, jiffies 4294948258 (age 195.764s)
  hex dump (first 32 bytes):
    10 28 09 ba c0 ff ff ff 00 00 69 b2 c0 ff ff ff  .(........i.....
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  backtrace:
    [<ffffff800824cec4>] __kmalloc+0x26c/0x308
    [<ffffff8000e70990>] __nvgpu_kzalloc+0x30/0x88 [nvgpu]
    [<ffffff8000e71f70>] gk20a_ctrl_dev_open+0x60/0x108 [nvgpu]
    [<ffffff800827ef20>] chrdev_open+0xb8/0x1d0
    [<ffffff8008274654>] do_dentry_open+0x224/0x330
    [<ffffff8008275c60>] vfs_open+0x58/0x90
    [<ffffff800828aeb4>] do_last+0x3e4/0xd98
    [<ffffff800828b90c>] path_openat+0xa4/0x2d8
    [<ffffff800828cf0c>] do_filp_open+0x84/0x108
    [<ffffff800827610c>] do_sys_open+0x164/0x278
    [<ffffff80082762a4>] SyS_openat+0x3c/0x50
    [<ffffff8008083600>] el0_svc_naked+0x34/0x38
    [<ffffffffffffffff>] 0xffffffffffffffff

Bug 200422739

Change-Id: I4ad03713ef5c8fc0e213bf4b649d38829a54a1ac
Signed-off-by: Vince Hsu <vinceh@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1777656
Reviewed-by: Debarshi Dutta <ddutta@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Tested-by: Sachin Nikam <snikam@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Vince Hsu
2018-07-13 16:11:37 +08:00
committed by mobile promotions
parent 8c111d34f4
commit 77dc80699c

View File

@@ -102,8 +102,11 @@ int gk20a_ctrl_dev_open(struct inode *inode, struct file *filp)
err = nvgpu_clk_arb_init_session(g, &priv->clk_session);
free_ref:
if (err)
if (err) {
gk20a_put(g);
if (priv)
nvgpu_kfree(g, priv);
}
return err;
}
int gk20a_ctrl_dev_release(struct inode *inode, struct file *filp)