mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-24 02:22:34 +03:00
gpu: nvgpu: check return value of mutex_init in sched_gk20a.c
- check return value of nvgpu_mutex_init in sched_gk20a.c - add corresponding nvgpu_mutex_destroy calls Jira NVGPU-13 Change-Id: I49013851e3f271b059a7b46d63816d8d385b48de Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/1321292 Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
e239cad2d9
commit
caee1441b8
@@ -640,6 +640,7 @@ int gk20a_sched_ctrl_init(struct gk20a *g)
|
||||
{
|
||||
struct gk20a_sched_ctrl *sched = &g->sched_ctrl;
|
||||
struct fifo_gk20a *f = &g->fifo;
|
||||
int err;
|
||||
|
||||
if (sched->sw_ready)
|
||||
return 0;
|
||||
@@ -656,29 +657,47 @@ int gk20a_sched_ctrl_init(struct gk20a *g)
|
||||
return -ENOMEM;
|
||||
|
||||
sched->recent_tsg_bitmap = nvgpu_kzalloc(g, sched->bitmap_size);
|
||||
if (!sched->recent_tsg_bitmap)
|
||||
if (!sched->recent_tsg_bitmap) {
|
||||
err = -ENOMEM;
|
||||
goto free_active;
|
||||
}
|
||||
|
||||
sched->ref_tsg_bitmap = nvgpu_kzalloc(g, sched->bitmap_size);
|
||||
if (!sched->ref_tsg_bitmap)
|
||||
if (!sched->ref_tsg_bitmap) {
|
||||
err = -ENOMEM;
|
||||
goto free_recent;
|
||||
}
|
||||
|
||||
init_waitqueue_head(&sched->readout_wq);
|
||||
nvgpu_mutex_init(&sched->status_lock);
|
||||
nvgpu_mutex_init(&sched->control_lock);
|
||||
nvgpu_mutex_init(&sched->busy_lock);
|
||||
|
||||
err = nvgpu_mutex_init(&sched->status_lock);
|
||||
if (err)
|
||||
goto free_ref;
|
||||
|
||||
err = nvgpu_mutex_init(&sched->control_lock);
|
||||
if (err)
|
||||
goto free_status_lock;
|
||||
|
||||
err = nvgpu_mutex_init(&sched->busy_lock);
|
||||
if (err)
|
||||
goto free_control_lock;
|
||||
|
||||
sched->sw_ready = true;
|
||||
|
||||
return 0;
|
||||
|
||||
free_control_lock:
|
||||
nvgpu_mutex_destroy(&sched->control_lock);
|
||||
free_status_lock:
|
||||
nvgpu_mutex_destroy(&sched->status_lock);
|
||||
free_ref:
|
||||
nvgpu_kfree(g, sched->ref_tsg_bitmap);
|
||||
free_recent:
|
||||
nvgpu_kfree(g, sched->recent_tsg_bitmap);
|
||||
|
||||
free_active:
|
||||
nvgpu_kfree(g, sched->active_tsg_bitmap);
|
||||
|
||||
return -ENOMEM;
|
||||
return err;
|
||||
}
|
||||
|
||||
void gk20a_sched_ctrl_cleanup(struct gk20a *g)
|
||||
@@ -691,5 +710,10 @@ void gk20a_sched_ctrl_cleanup(struct gk20a *g)
|
||||
sched->active_tsg_bitmap = NULL;
|
||||
sched->recent_tsg_bitmap = NULL;
|
||||
sched->ref_tsg_bitmap = NULL;
|
||||
|
||||
nvgpu_mutex_destroy(&sched->status_lock);
|
||||
nvgpu_mutex_destroy(&sched->control_lock);
|
||||
nvgpu_mutex_destroy(&sched->busy_lock);
|
||||
|
||||
sched->sw_ready = false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user