Commit e43d76b4 authored by Brandon Philips's avatar Brandon Philips Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (7281): v4l: Deadlock in videobuf-core for DQBUF waiting on QBUF



Avoid a deadlock where DQBUF is holding the vb_lock while waiting on a QBUF
which also needs the vb_lock.  Reported by Hans Verkuil <hverkuil@xs4all.nl>.

Signed-off-by: default avatarBrandon Philips <bphilips@suse.de>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 9dc4e48f
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -605,7 +605,9 @@ int videobuf_dqbuf(struct videobuf_queue *q,
		goto done;
	}
	buf = list_entry(q->stream.next, struct videobuf_buffer, stream);
	mutex_unlock(&q->vb_lock);
	retval = videobuf_waiton(buf, nonblocking, 1);
	mutex_lock(&q->vb_lock);
	if (retval < 0) {
		dprintk(1, "dqbuf: waiton returned %d\n", retval);
		goto done;