video: rockchip: mpp: fix access null task issue

Signed-off-by: Yandong Lin <yandong.lin@rock-chips.com>
Change-Id: Ie5f6b38f4be0276cca6f982205e59428f79650ce
This commit is contained in:
Yandong Lin
2023-08-07 10:29:37 +08:00
committed by Tao Huang
parent 6a8c650aea
commit 8e8158deff

View File

@@ -973,6 +973,7 @@ static void rkvdec2_link_try_dequeue(struct mpp_dev *mpp)
list_move_tail(&task->table->link, &link_dec->unused_list);
list_del_init(&mpp_task->queue_link);
link_dec->task_running--;
set_bit(TASK_STATE_HANDLE, &mpp_task->state);
set_bit(TASK_STATE_PROC_DONE, &mpp_task->state);
@@ -981,13 +982,10 @@ static void rkvdec2_link_try_dequeue(struct mpp_dev *mpp)
if (test_bit(TASK_STATE_ABORT, &mpp_task->state))
set_bit(TASK_STATE_ABORT_READY, &mpp_task->state);
wake_up(&mpp_task->wait);
kref_put(&mpp_task->ref, rkvdec2_link_free_task);
link_dec->task_running--;
mpp_dbg_link("session %d task %d irq_status %#08x timeout %d abort %d\n",
mpp_task->session->index, mpp_task->task_index,
irq_status, timeout_flag, abort_flag);
if (irq_status & RKVDEC_INT_ERROR_MASK) {
dev_err(mpp->dev,
"session %d task %d irq_status %#08x timeout %u abort %u\n",
@@ -996,6 +994,9 @@ static void rkvdec2_link_try_dequeue(struct mpp_dev *mpp)
if (!reset_flag)
atomic_inc(&mpp->reset_request);
}
wake_up(&mpp_task->wait);
kref_put(&mpp_task->ref, rkvdec2_link_free_task);
}
/* resend running task after reset */