Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6a858815 authored by Florian Echtler's avatar Florian Echtler Committed by Mauro Carvalho Chehab
Browse files

[media] sur40: fix occasional oopses on device close



Closing the V4L2 device sometimes triggers a kernel oops.
Present patch fixes this.

Signed-off-by: default avatarMartin Kaltenbrunner <modin@yuri.at>
Signed-off-by: default avatarFlorian Echtler <floe@butterbrot.org>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Cc: <stable@vger.kernel.org>      # for v4.2 and up
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent af766ee0
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -447,7 +447,7 @@ static void sur40_process_video(struct sur40_state *sur40)


	/* return error if streaming was stopped in the meantime */
	/* return error if streaming was stopped in the meantime */
	if (sur40->sequence == -1)
	if (sur40->sequence == -1)
		goto err_poll;
		return;


	/* mark as finished */
	/* mark as finished */
	new_buf->vb.vb2_buf.timestamp = ktime_get_ns();
	new_buf->vb.vb2_buf.timestamp = ktime_get_ns();
@@ -725,6 +725,7 @@ static int sur40_start_streaming(struct vb2_queue *vq, unsigned int count)
static void sur40_stop_streaming(struct vb2_queue *vq)
static void sur40_stop_streaming(struct vb2_queue *vq)
{
{
	struct sur40_state *sur40 = vb2_get_drv_priv(vq);
	struct sur40_state *sur40 = vb2_get_drv_priv(vq);
	vb2_wait_for_all_buffers(vq);
	sur40->sequence = -1;
	sur40->sequence = -1;


	/* Release all active buffers */
	/* Release all active buffers */