summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2017-03-08 04:47:26 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2017-03-14 14:46:53 -0400
commitce810756ba94b160dd4c39511a72ef853c5ee66f (patch)
tree0801a1560e9f2c6886b5cfec0822b2ac1fc55b68 /drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
parentd6150fa12c005a30c88bd09b790e2c9289ecd72f (diff)
gpu: nvgpu: check return value of mutex_init in ctxsw_trace_gk20a.c
- check return value of nvgpu_mutex_init in ctxsw_trace_gk20a.c - add corresponding nvgpu_mutex_destroy calls Jira NVGPU-13 Change-Id: I7075c6f742dba7ad4c559fedb80a3a96e824db56 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/1317134 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/gk20a/ctxsw_trace_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c b/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
index 4e265b81..e33477f6 100644
--- a/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
@@ -475,6 +475,7 @@ static int gk20a_ctxsw_init_devs(struct gk20a *g)
475{ 475{
476 struct gk20a_ctxsw_trace *trace = g->ctxsw_trace; 476 struct gk20a_ctxsw_trace *trace = g->ctxsw_trace;
477 struct gk20a_ctxsw_dev *dev = trace->devs; 477 struct gk20a_ctxsw_dev *dev = trace->devs;
478 int err;
478 int i; 479 int i;
479 480
480 for (i = 0; i < GK20A_CTXSW_TRACE_NUM_DEVS; i++) { 481 for (i = 0; i < GK20A_CTXSW_TRACE_NUM_DEVS; i++) {
@@ -482,7 +483,9 @@ static int gk20a_ctxsw_init_devs(struct gk20a *g)
482 dev->hdr = NULL; 483 dev->hdr = NULL;
483 dev->write_enabled = false; 484 dev->write_enabled = false;
484 init_waitqueue_head(&dev->readout_wq); 485 init_waitqueue_head(&dev->readout_wq);
485 nvgpu_mutex_init(&dev->write_lock); 486 err = nvgpu_mutex_init(&dev->write_lock);
487 if (err)
488 return err;
486 atomic_set(&dev->vma_ref, 0); 489 atomic_set(&dev->vma_ref, 0);
487 dev++; 490 dev++;
488 } 491 }
@@ -533,9 +536,21 @@ fail:
533void gk20a_ctxsw_trace_cleanup(struct gk20a *g) 536void gk20a_ctxsw_trace_cleanup(struct gk20a *g)
534{ 537{
535#ifdef CONFIG_GK20A_CTXSW_TRACE 538#ifdef CONFIG_GK20A_CTXSW_TRACE
539 struct gk20a_ctxsw_trace *trace;
540 struct gk20a_ctxsw_dev *dev;
541 int i;
542
536 if (!g->ctxsw_trace) 543 if (!g->ctxsw_trace)
537 return; 544 return;
538 545
546 trace = g->ctxsw_trace;
547 dev = trace->devs;
548
549 for (i = 0; i < GK20A_CTXSW_TRACE_NUM_DEVS; i++) {
550 nvgpu_mutex_destroy(&dev->write_lock);
551 dev++;
552 }
553
539 kfree(g->ctxsw_trace); 554 kfree(g->ctxsw_trace);
540 g->ctxsw_trace = NULL; 555 g->ctxsw_trace = NULL;
541 556