diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c index 8db885e33..fd28dec19 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, if (!skip_buffer_refcounting) { err = gk20a_vm_get_buffers(vm, &mapped_buffers, &num_mapped_buffers); - if (err) { - gk20a_vm_put(vm); - return err; - } + if (err) + goto err_put_vm; } job = kzalloc(sizeof(*job), GFP_KERNEL); if (!job) { - gk20a_vm_put_buffers(vm, mapped_buffers, num_mapped_buffers); - gk20a_vm_put(vm); - return -ENOMEM; + err = -ENOMEM; + goto err_put_buffers; } /* 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, list_add_tail(&job->list, &c->jobs); mutex_unlock(&c->jobs_lock); } else { - return -ETIMEDOUT; + err = -ETIMEDOUT; + goto err_free_job; } return 0; + +err_free_job: + kfree(job); +err_put_buffers: + gk20a_vm_put_buffers(vm, mapped_buffers, num_mapped_buffers); +err_put_vm: + gk20a_vm_put(vm); + + return err; } void gk20a_channel_update(struct channel_gk20a *c, int nr_completed) diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c index 7ac600c06..79218c971 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a.c @@ -1102,7 +1102,7 @@ static int gk20a_pm_enable_clk(struct device *dev) for (index = 0; index < platform->num_clks; index++) { int err = 0; if (platform->clk[index]) - clk_prepare_enable(platform->clk[index]); + err = clk_prepare_enable(platform->clk[index]); if (err) return -EINVAL; } @@ -1623,14 +1623,12 @@ static int gk20a_domain_init(struct of_device_id *matches) { int ret = 0; struct device_node *np; - const struct of_device_id *match; struct gk20a_domain_data *gk20a_domain; np = of_find_matching_node(NULL, matches); if (!np) return -ENOENT; - match = of_match_node(matches, np); gk20a_domain = (struct gk20a_domain_data *)kzalloc (sizeof(struct gk20a_domain_data), GFP_KERNEL); if (!gk20a_domain) diff --git a/drivers/gpu/nvgpu/gk20a/gk20a_scale.c b/drivers/gpu/nvgpu/gk20a/gk20a_scale.c index 0411e2fad..82e245358 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a_scale.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a_scale.c @@ -314,8 +314,7 @@ void gk20a_scale_init(struct platform_device *pdev) return; err_get_freqs: - kfree(g->scale_profile); - g->scale_profile = NULL; + kfree(profile); } void gk20a_scale_exit(struct platform_device *pdev) diff --git a/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c b/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c index 7cb386f07..c7f9a55d0 100644 --- a/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c @@ -105,7 +105,7 @@ static int gk20a_ltc_cbc_ctrl(struct gk20a *g, enum gk20a_cbc_op op, int err = 0; struct gr_gk20a *gr = &g->gr; u32 fbp, slice, ctrl1, val, hw_op = 0; - u32 retry = 200; + int retry = 200; u32 slices_per_fbp = ltc_ltcs_ltss_cbc_param_slices_per_fbp_v( gk20a_readl(g, ltc_ltcs_ltss_cbc_param_r())); diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c index 4c31d5e4c..4bc8d3857 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c @@ -1735,7 +1735,7 @@ int gk20a_vm_get_compbits_info(struct vm_gk20a *vm, mapped_buffer = find_mapped_buffer_locked(&vm->mapped_buffers, mapping_gva); - if (!mapped_buffer | !mapped_buffer->user_mapped) + if (!mapped_buffer || !mapped_buffer->user_mapped) { mutex_unlock(&vm->update_gmmu_lock); gk20a_err(d, "%s: bad offset 0x%llx", __func__, mapping_gva);