drm/v3d: fix missing unlock
[why] Unlock is needed on the error handling path to prevent dead lock. v3d_submit_cl_ioctl and v3d_submit_csd_ioctl is missing unlock. [how] Fix this by changing goto target on the error handling path. So changing the goto to target an error handling path that includes drm_gem_unlock reservations. Signed-off-by: Yongzhi Liu <lyz_cs@pku.edu.cn> Reviewed-by: Melissa Wen <mwen@igalia.com> Signed-off-by: Melissa Wen <melissa.srw@gmail.com> Link: https://patchwork.freedesktop.org/patch/msgid/1643377262-109975-1-git-send-email-lyz_cs@pku.edu.cn
This commit is contained in:
parent
d80976d9ff
commit
e57c1a3bd5
|
@ -798,7 +798,7 @@ v3d_submit_cl_ioctl(struct drm_device *dev, void *data,
|
|||
|
||||
if (!render->base.perfmon) {
|
||||
ret = -ENOENT;
|
||||
goto fail;
|
||||
goto fail_perfmon;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -847,6 +847,7 @@ v3d_submit_cl_ioctl(struct drm_device *dev, void *data,
|
|||
|
||||
fail_unreserve:
|
||||
mutex_unlock(&v3d->sched_lock);
|
||||
fail_perfmon:
|
||||
drm_gem_unlock_reservations(last_job->bo,
|
||||
last_job->bo_count, &acquire_ctx);
|
||||
fail:
|
||||
|
@ -1027,7 +1028,7 @@ v3d_submit_csd_ioctl(struct drm_device *dev, void *data,
|
|||
args->perfmon_id);
|
||||
if (!job->base.perfmon) {
|
||||
ret = -ENOENT;
|
||||
goto fail;
|
||||
goto fail_perfmon;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1056,6 +1057,7 @@ v3d_submit_csd_ioctl(struct drm_device *dev, void *data,
|
|||
|
||||
fail_unreserve:
|
||||
mutex_unlock(&v3d->sched_lock);
|
||||
fail_perfmon:
|
||||
drm_gem_unlock_reservations(clean_job->bo, clean_job->bo_count,
|
||||
&acquire_ctx);
|
||||
fail:
|
||||
|
|
Loading…
Reference in New Issue