mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-18 08:35:08 +08:00
[media] coda: do not call v4l2_m2m_job_finish from .job_abort
If we just declare the job finished here while the CODA is still running, the call to v4l2_m2m_ctx_release in coda_release, which is supposed to wait for a running job to finish, will return immediately and free memory that the CODA is still using. Just set the 'aborting' flag and let coda_irq_handler deal with it. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Kamil Debski <k.debski@samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
fcb62825e7
commit
3e748268f3
@ -812,6 +812,12 @@ static int coda_job_ready(void *m2m_priv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (ctx->aborting) {
|
||||
v4l2_dbg(1, coda_debug, &ctx->dev->v4l2_dev,
|
||||
"not ready: aborting\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
v4l2_dbg(1, coda_debug, &ctx->dev->v4l2_dev,
|
||||
"job ready\n");
|
||||
return 1;
|
||||
@ -820,14 +826,11 @@ static int coda_job_ready(void *m2m_priv)
|
||||
static void coda_job_abort(void *priv)
|
||||
{
|
||||
struct coda_ctx *ctx = priv;
|
||||
struct coda_dev *dev = ctx->dev;
|
||||
|
||||
ctx->aborting = 1;
|
||||
|
||||
v4l2_dbg(1, coda_debug, &ctx->dev->v4l2_dev,
|
||||
"Aborting task\n");
|
||||
|
||||
v4l2_m2m_job_finish(dev->m2m_dev, ctx->m2m_ctx);
|
||||
}
|
||||
|
||||
static void coda_lock(void *m2m_priv)
|
||||
|
Loading…
Reference in New Issue
Block a user