summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/clk/clk_arb.c
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2017-03-08 04:46:53 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2017-03-14 14:46:52 -0400
commitd6150fa12c005a30c88bd09b790e2c9289ecd72f (patch)
tree46a9fa6429c0257c106a90e56c321f74df111806 /drivers/gpu/nvgpu/clk/clk_arb.c
parentde568db9dee599fa27cdc2ead88186099fff3c3b (diff)
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 <dnibade@nvidia.com> Reviewed-on: http://git-master/r/1317133 Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-by: Navneet Kumar <navneetk@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/clk/clk_arb.c')
-rw-r--r--drivers/gpu/nvgpu/clk/clk_arb.c32
1 files changed, 17 insertions, 15 deletions
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)
267 return 0; 267 return 0;
268 268
269 arb = kzalloc(sizeof(struct nvgpu_clk_arb), GFP_KERNEL); 269 arb = kzalloc(sizeof(struct nvgpu_clk_arb), GFP_KERNEL);
270 if (!arb) { 270 if (!arb)
271 err = -ENOMEM; 271 return -ENOMEM;
272 goto init_fail; 272
273 } 273 err = nvgpu_mutex_init(&arb->pstate_lock);
274 if (err)
275 goto mutex_fail;
276 nvgpu_spinlock_init(&arb->sessions_lock);
277 nvgpu_spinlock_init(&arb->users_lock);
274 278
275 arb->mclk_f_points = kcalloc(MAX_F_POINTS, sizeof(u16), GFP_KERNEL); 279 arb->mclk_f_points = kcalloc(MAX_F_POINTS, sizeof(u16), GFP_KERNEL);
276 if (!arb->mclk_f_points) { 280 if (!arb->mclk_f_points) {
@@ -308,10 +312,6 @@ int nvgpu_clk_arb_init_arbiter(struct gk20a *g)
308 g->clk_arb = arb; 312 g->clk_arb = arb;
309 arb->g = g; 313 arb->g = g;
310 314
311 nvgpu_mutex_init(&arb->pstate_lock);
312 nvgpu_spinlock_init(&arb->sessions_lock);
313 nvgpu_spinlock_init(&arb->users_lock);
314
315 err = g->ops.clk_arb.get_arbiter_clk_default(g, 315 err = g->ops.clk_arb.get_arbiter_clk_default(g,
316 CTRL_CLK_DOMAIN_MCLK, &default_mhz); 316 CTRL_CLK_DOMAIN_MCLK, &default_mhz);
317 if (err < 0) { 317 if (err < 0) {
@@ -382,16 +382,17 @@ int nvgpu_clk_arb_init_arbiter(struct gk20a *g)
382 382
383init_fail: 383init_fail:
384 384
385 if (arb) { 385 kfree(arb->gpc2clk_f_points);
386 kfree(arb->gpc2clk_f_points); 386 kfree(arb->mclk_f_points);
387 kfree(arb->mclk_f_points);
388 387
389 for (index = 0; index < 2; index++) { 388 for (index = 0; index < 2; index++) {
390 kfree(arb->vf_table_pool[index].gpc2clk_points); 389 kfree(arb->vf_table_pool[index].gpc2clk_points);
391 kfree(arb->vf_table_pool[index].mclk_points); 390 kfree(arb->vf_table_pool[index].mclk_points);
392 }
393 } 391 }
394 392
393 nvgpu_mutex_destroy(&arb->pstate_lock);
394
395mutex_fail:
395 kfree(arb); 396 kfree(arb);
396 397
397 return err; 398 return err;
@@ -454,6 +455,7 @@ static void nvgpu_clk_arb_set_global_alarm(struct gk20a *g, u32 alarm)
454 455
455void nvgpu_clk_arb_cleanup_arbiter(struct gk20a *g) 456void nvgpu_clk_arb_cleanup_arbiter(struct gk20a *g)
456{ 457{
458 nvgpu_mutex_destroy(&g->clk_arb->pstate_lock);
457 kfree(g->clk_arb); 459 kfree(g->clk_arb);
458} 460}
459 461