aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@osg.samsung.com>2016-02-03 19:30:31 -0200
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>2016-02-04 09:15:51 -0200
commit1f2c450185b7b8d50d38d37ee30387ff4cd337f8 (patch)
tree188febdf5c1d194a7681c23787bcdb461f112768
parent[media] vb2: fix nasty vb2_thread regression (diff)
downloadlinux-dev-1f2c450185b7b8d50d38d37ee30387ff4cd337f8.tar.xz
linux-dev-1f2c450185b7b8d50d38d37ee30387ff4cd337f8.zip
[media] vb2-core: call threadio->fnc() if !VB2_BUF_STATE_ERROR
changeset 70433a152f0 ("media: videobuf2: Refactor vb2_fileio_data and vb2_thread") broke videobuf2-dvb. The root cause is that, instead of calling threadio->fnc() for all types of events except for VB2_BUF_STATE_ERROR, it was calling it only for VB2_BUF_STATE_DONE. With that, the DVB thread were never called. Cc: stable@vger.kernel.org # Kernel >= 4.3 Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
-rw-r--r--drivers/media/v4l2-core/videobuf2-core.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c
index b53e42c329cb..ff8953ae52d1 100644
--- a/drivers/media/v4l2-core/videobuf2-core.c
+++ b/drivers/media/v4l2-core/videobuf2-core.c
@@ -2742,7 +2742,7 @@ static int vb2_thread(void *data)
break;
try_to_freeze();
- if (vb->state == VB2_BUF_STATE_DONE)
+ if (vb->state != VB2_BUF_STATE_ERROR)
if (threadio->fnc(vb, threadio->priv))
break;
call_void_qop(q, wait_finish, q);