diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2015-11-19 03:56:15 -0500 |
---|---|---|
committer | Sachin Nikam <snikam@nvidia.com> | 2015-11-25 03:45:58 -0500 |
commit | 10f6da09eb6fffea2d50c8fe4634e0d5f8226d7d (patch) | |
tree | 4141867911601aed374dba50b031cb5aa5d9e9d3 /drivers/gpu/nvgpu/gk20a/channel_gk20a.c | |
parent | 836027806dab4a59c0faadca4f530371ef5869d0 (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.c | 23 |
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 | |||
1724 | err_free_job: | ||
1725 | kfree(job); | ||
1726 | err_put_buffers: | ||
1727 | gk20a_vm_put_buffers(vm, mapped_buffers, num_mapped_buffers); | ||
1728 | err_put_vm: | ||
1729 | gk20a_vm_put(vm); | ||
1730 | |||
1731 | return err; | ||
1725 | } | 1732 | } |
1726 | 1733 | ||
1727 | void gk20a_channel_update(struct channel_gk20a *c, int nr_completed) | 1734 | void gk20a_channel_update(struct channel_gk20a *c, int nr_completed) |