From 73b3051bda444572ade376e71c4650b2156addc0 Mon Sep 17 00:00:00 2001 From: Li Huang Date: Wed, 8 Dec 2021 16:05:13 +0800 Subject: [PATCH] video: rockchip: rga3: Fixup crash on rga_job_done Signed-off-by: Li Huang Change-Id: I0598cf3394673a3475b1fe6bb8a3a2ada00d1217 --- drivers/video/rockchip/rga3/rga_job.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/video/rockchip/rga3/rga_job.c b/drivers/video/rockchip/rga3/rga_job.c index 2197d8716535..cc3883ff7cb1 100644 --- a/drivers/video/rockchip/rga3/rga_job.c +++ b/drivers/video/rockchip/rga3/rga_job.c @@ -229,16 +229,17 @@ void rga_job_done(struct rga_scheduler_t *rga_scheduler, int ret) rga_dma_put_info(job); + mmput(job->mm); mmdrop(job->mm); if (job->out_fence) dma_fence_signal(job->out_fence); - wake_up(&rga_scheduler->job_done_wq); - if (job->flags & RGA_JOB_ASYNC) rga_job_cleanup(job); + wake_up(&rga_scheduler->job_done_wq); + rga_job_next(rga_scheduler); rga_power_disable(rga_scheduler); @@ -566,6 +567,7 @@ static void rga_job_timeout_clean(struct rga_scheduler_t *scheduler) rga_dma_put_info(job); + mmput(job->mm); mmdrop(job->mm); if (job->out_fence) @@ -736,6 +738,7 @@ int rga_commit(struct rga_req *rga_command_base, int flags) } mmgrab(current->mm); + mmget(current->mm); job->mm = current->mm; if (flags == RGA_BLIT_ASYNC) {