summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2015-11-19 03:56:15 -0500
committerSachin Nikam <snikam@nvidia.com>2015-11-25 03:45:58 -0500
commit10f6da09eb6fffea2d50c8fe4634e0d5f8226d7d (patch)
tree4141867911601aed374dba50b031cb5aa5d9e9d3 /drivers/gpu/nvgpu/gk20a/channel_gk20a.c
parent836027806dab4a59c0faadca4f530371ef5869d0 (diff)
gpu: nvgpu: fix Coverity issues
- operands not affecting result (id = 12845) - logically dead code (id = 12890) - dereference after null check (id = 12968) - unsigned compared to 0 (id = 13176) - resource leak (id = 13338, 18673) - unused pointer value (id = 13916) Bug 1703084 Change-Id: I2f401dd93126af27748c53fa1b3a59cb154af36b Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/835143 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-by: Seshendra Gadagottu <sgadagottu@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/channel_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
index 8db885e3..fd28dec1 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
@@ -1688,17 +1688,14 @@ static int gk20a_channel_add_job(struct channel_gk20a *c,
1688 if (!skip_buffer_refcounting) { 1688 if (!skip_buffer_refcounting) {
1689 err = gk20a_vm_get_buffers(vm, &mapped_buffers, 1689 err = gk20a_vm_get_buffers(vm, &mapped_buffers,
1690 &num_mapped_buffers); 1690 &num_mapped_buffers);
1691 if (err) { 1691 if (err)
1692 gk20a_vm_put(vm); 1692 goto err_put_vm;
1693 return err;
1694 }
1695 } 1693 }
1696 1694
1697 job = kzalloc(sizeof(*job), GFP_KERNEL); 1695 job = kzalloc(sizeof(*job), GFP_KERNEL);
1698 if (!job) { 1696 if (!job) {
1699 gk20a_vm_put_buffers(vm, mapped_buffers, num_mapped_buffers); 1697 err = -ENOMEM;
1700 gk20a_vm_put(vm); 1698 goto err_put_buffers;
1701 return -ENOMEM;
1702 } 1699 }
1703 1700
1704 /* put() is done in gk20a_channel_update() when the job is done */ 1701 /* put() is done in gk20a_channel_update() when the job is done */
@@ -1718,10 +1715,20 @@ static int gk20a_channel_add_job(struct channel_gk20a *c,
1718 list_add_tail(&job->list, &c->jobs); 1715 list_add_tail(&job->list, &c->jobs);
1719 mutex_unlock(&c->jobs_lock); 1716 mutex_unlock(&c->jobs_lock);
1720 } else { 1717 } else {
1721 return -ETIMEDOUT; 1718 err = -ETIMEDOUT;
1719 goto err_free_job;
1722 } 1720 }
1723 1721
1724 return 0; 1722 return 0;
1723
1724err_free_job:
1725 kfree(job);
1726err_put_buffers:
1727 gk20a_vm_put_buffers(vm, mapped_buffers, num_mapped_buffers);
1728err_put_vm:
1729 gk20a_vm_put(vm);
1730
1731 return err;
1725} 1732}
1726 1733
1727void gk20a_channel_update(struct channel_gk20a *c, int nr_completed) 1734void gk20a_channel_update(struct channel_gk20a *c, int nr_completed)