video: rockchip: rga3: fix use-after-free in rga_request_release_signal

Make sure the job is no longer in use before releasing the job.

Signed-off-by: Yu Qiaowei <cerf.yu@rock-chips.com>
Change-Id: I6a63c2b94fc9004bb460279e7a940ffa0f57c682
This commit is contained in:
Yu Qiaowei
2022-10-15 12:33:13 +08:00
parent 10b63561fc
commit 96d74e940e

View File

@@ -832,8 +832,6 @@ int rga_request_release_signal(struct rga_scheduler_t *scheduler, struct rga_job
rga_request_get(request);
mutex_unlock(&request_manager->lock);
rga_job_cleanup(job);
spin_lock_irqsave(&request->lock, flags);
if (job->ret < 0) {
@@ -848,6 +846,8 @@ int rga_request_release_signal(struct rga_scheduler_t *scheduler, struct rga_job
spin_unlock_irqrestore(&request->lock, flags);
rga_job_cleanup(job);
if ((failed_count + finished_count) >= request->task_count) {
spin_lock_irqsave(&request->lock, flags);