From 685b4d351ed413b19261be3e884bf182bf1a0e7f Mon Sep 17 00:00:00 2001 From: Terje Bergstrom Date: Tue, 20 Dec 2016 15:15:44 -0800 Subject: gpu: nvgpu: Fix memory leak in arb install nvgpu_clk_arb_install_fd() leaks dev if it cannot create an fd, and it leaks both dev and fd if it fails to create a file. Change-Id: I65c03401dba44d88be543d3aec2fa3fcd2fb0dcc Signed-off-by: Terje Bergstrom Reviewed-on: http://git-master/r/1279225 GVS: Gerrit_Virtual_Submit Reviewed-by: Thomas Fleury --- drivers/gpu/nvgpu/clk/clk_arb.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'drivers/gpu/nvgpu/clk') diff --git a/drivers/gpu/nvgpu/clk/clk_arb.c b/drivers/gpu/nvgpu/clk/clk_arb.c index c440dc3b..e8213b47 100644 --- a/drivers/gpu/nvgpu/clk/clk_arb.c +++ b/drivers/gpu/nvgpu/clk/clk_arb.c @@ -332,15 +332,17 @@ static int nvgpu_clk_arb_install_fd(struct gk20a *g, return -ENOMEM; fd = get_unused_fd_flags(O_RDWR); - if (fd < 0) - return fd; + if (fd < 0) { + err = fd; + goto fail; + } name = kasprintf(GFP_KERNEL, "%s-clk-fd%d", dev_name(g->dev), fd); file = anon_inode_getfile(name, fops, dev, O_RDWR); kfree(name); if (IS_ERR(file)) { err = PTR_ERR(file); - goto fail; + goto fail_fd; } fd_install(fd, file); @@ -357,9 +359,10 @@ static int nvgpu_clk_arb_install_fd(struct gk20a *g, return fd; +fail_fd: + put_unused_fd(fd); fail: kfree(dev); - put_unused_fd(fd); return err; } -- cgit v1.2.2