media: vim2m: use cancel_delayed_work_sync instead of flush_schedule_work
The use of flush_schedule_work() made no sense and caused a syzkaller error. Replace with the correct cancel_delayed_work_sync(). Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Reported-by: syzbot+69780d144754b8071f4b@syzkaller.appspotmail.com Cc: <stable@vger.kernel.org> # for v4.20 and up Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
parent
e10b40f330
commit
52117be68b
|
@ -803,10 +803,11 @@ static int vim2m_start_streaming(struct vb2_queue *q, unsigned count)
|
||||||
static void vim2m_stop_streaming(struct vb2_queue *q)
|
static void vim2m_stop_streaming(struct vb2_queue *q)
|
||||||
{
|
{
|
||||||
struct vim2m_ctx *ctx = vb2_get_drv_priv(q);
|
struct vim2m_ctx *ctx = vb2_get_drv_priv(q);
|
||||||
|
struct vim2m_dev *dev = ctx->dev;
|
||||||
struct vb2_v4l2_buffer *vbuf;
|
struct vb2_v4l2_buffer *vbuf;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
flush_scheduled_work();
|
cancel_delayed_work_sync(&dev->work_run);
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (V4L2_TYPE_IS_OUTPUT(q->type))
|
if (V4L2_TYPE_IS_OUTPUT(q->type))
|
||||||
vbuf = v4l2_m2m_src_buf_remove(ctx->fh.m2m_ctx);
|
vbuf = v4l2_m2m_src_buf_remove(ctx->fh.m2m_ctx);
|
||||||
|
|
Loading…
Reference in New Issue