mirror of
https://github.com/torvalds/linux.git
synced 2024-12-22 02:52:56 +00:00
media: atomisp: Flush queue on atomisp_css_start() error
I managed to trigger an atomisp_css_start() error by pushing my test system towards an OOM situation, this triggered the following WARN_ON() in __vb2_queue_cancel() in videobuf2-core.c: /* * If you see this warning, then the driver isn't cleaning up properly * after a failed start_streaming(). See the start_streaming() * documentation in videobuf2-core.h for more information how buffers * should be returned to vb2 in start_streaming(). */ if (WARN_ON(atomic_read(&q->owned_by_drv_count))) { Fix this by calling atomisp_flush_video_pipe() to return any queued buffers back to the videobuf2-core on an atomisp_css_start() error. Reviewed-by: Andy Shevchenko <andy@kernel.org> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
afbfe82cbb
commit
36c953e1ef
@ -1353,8 +1353,10 @@ int atomisp_start_streaming(struct vb2_queue *vq, unsigned int count)
|
||||
asd->params.dvs_6axis = NULL;
|
||||
|
||||
ret = atomisp_css_start(asd, css_pipe_id, false);
|
||||
if (ret)
|
||||
if (ret) {
|
||||
atomisp_flush_video_pipe(pipe, true);
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&isp->lock, irqflags);
|
||||
asd->streaming = ATOMISP_DEVICE_STREAMING_ENABLED;
|
||||
|
Loading…
Reference in New Issue
Block a user