From d6150fa12c005a30c88bd09b790e2c9289ecd72f Mon Sep 17 00:00:00 2001 From: Deepak Nibade Date: Wed, 8 Mar 2017 15:16:53 +0530 Subject: gpu: nvgpu: check return value of mutex_init in clk_arb.c - check return value of nvgpu_mutex_init in clk_arb.c - add corresponding nvgpu_mutex_destroy calls Jira NVGPU-13 Change-Id: I823888ec234ce5358187c449de8e6cabc5fc5503 Signed-off-by: Deepak Nibade Reviewed-on: http://git-master/r/1317133 Reviewed-by: svccoveritychecker GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom Reviewed-by: Navneet Kumar --- drivers/gpu/nvgpu/clk/clk_arb.c | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 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 c00a79ec..3bf64d0b 100644 --- a/drivers/gpu/nvgpu/clk/clk_arb.c +++ b/drivers/gpu/nvgpu/clk/clk_arb.c @@ -267,10 +267,14 @@ int nvgpu_clk_arb_init_arbiter(struct gk20a *g) return 0; arb = kzalloc(sizeof(struct nvgpu_clk_arb), GFP_KERNEL); - if (!arb) { - err = -ENOMEM; - goto init_fail; - } + if (!arb) + return -ENOMEM; + + err = nvgpu_mutex_init(&arb->pstate_lock); + if (err) + goto mutex_fail; + nvgpu_spinlock_init(&arb->sessions_lock); + nvgpu_spinlock_init(&arb->users_lock); arb->mclk_f_points = kcalloc(MAX_F_POINTS, sizeof(u16), GFP_KERNEL); if (!arb->mclk_f_points) { @@ -308,10 +312,6 @@ int nvgpu_clk_arb_init_arbiter(struct gk20a *g) g->clk_arb = arb; arb->g = g; - nvgpu_mutex_init(&arb->pstate_lock); - nvgpu_spinlock_init(&arb->sessions_lock); - nvgpu_spinlock_init(&arb->users_lock); - err = g->ops.clk_arb.get_arbiter_clk_default(g, CTRL_CLK_DOMAIN_MCLK, &default_mhz); if (err < 0) { @@ -382,16 +382,17 @@ int nvgpu_clk_arb_init_arbiter(struct gk20a *g) init_fail: - if (arb) { - kfree(arb->gpc2clk_f_points); - kfree(arb->mclk_f_points); + kfree(arb->gpc2clk_f_points); + kfree(arb->mclk_f_points); - for (index = 0; index < 2; index++) { - kfree(arb->vf_table_pool[index].gpc2clk_points); - kfree(arb->vf_table_pool[index].mclk_points); - } + for (index = 0; index < 2; index++) { + kfree(arb->vf_table_pool[index].gpc2clk_points); + kfree(arb->vf_table_pool[index].mclk_points); } + nvgpu_mutex_destroy(&arb->pstate_lock); + +mutex_fail: kfree(arb); return err; @@ -454,6 +455,7 @@ static void nvgpu_clk_arb_set_global_alarm(struct gk20a *g, u32 alarm) void nvgpu_clk_arb_cleanup_arbiter(struct gk20a *g) { + nvgpu_mutex_destroy(&g->clk_arb->pstate_lock); kfree(g->clk_arb); } -- cgit v1.2.2