diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2017-03-08 04:47:26 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-03-14 14:46:53 -0400 |
commit | ce810756ba94b160dd4c39511a72ef853c5ee66f (patch) | |
tree | 0801a1560e9f2c6886b5cfec0822b2ac1fc55b68 | |
parent | d6150fa12c005a30c88bd09b790e2c9289ecd72f (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>
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c | 17 |
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: | |||
533 | void gk20a_ctxsw_trace_cleanup(struct gk20a *g) | 536 | void 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 | ||