aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp Zabel <p.zabel@pengutronix.de>2014-05-26 09:49:22 -0400
committerMauro Carvalho Chehab <m.chehab@samsung.com>2014-07-04 15:11:44 -0400
commita85fd20fb62e5720ea4831b132334abc618972dd (patch)
tree9fc9eecc8c11a5617de048ee857a7d4942f9d5f1
parent7e49027e62b9cb8addcd00f7498d389469f119d4 (diff)
[media] mem2mem: make queue lock in v4l2_m2m_poll interruptible
This patch makes the queue lock taken in v4l2_m2m_poll interruptible. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
-rw-r--r--drivers/media/v4l2-core/v4l2-mem2mem.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/media/v4l2-core/v4l2-mem2mem.c b/drivers/media/v4l2-core/v4l2-mem2mem.c
index 178ce96556c6..97defed7c1ac 100644
--- a/drivers/media/v4l2-core/v4l2-mem2mem.c
+++ b/drivers/media/v4l2-core/v4l2-mem2mem.c
@@ -568,8 +568,12 @@ unsigned int v4l2_m2m_poll(struct file *file, struct v4l2_m2m_ctx *m2m_ctx,
568 568
569 if (m2m_ctx->m2m_dev->m2m_ops->lock) 569 if (m2m_ctx->m2m_dev->m2m_ops->lock)
570 m2m_ctx->m2m_dev->m2m_ops->lock(m2m_ctx->priv); 570 m2m_ctx->m2m_dev->m2m_ops->lock(m2m_ctx->priv);
571 else if (m2m_ctx->q_lock) 571 else if (m2m_ctx->q_lock) {
572 mutex_lock(m2m_ctx->q_lock); 572 if (mutex_lock_interruptible(m2m_ctx->q_lock)) {
573 rc |= POLLERR;
574 goto end;
575 }
576 }
573 577
574 spin_lock_irqsave(&src_q->done_lock, flags); 578 spin_lock_irqsave(&src_q->done_lock, flags);
575 if (!list_empty(&src_q->done_list)) 579 if (!list_empty(&src_q->done_list))