diff options
author | Philipp Zabel <p.zabel@pengutronix.de> | 2014-05-26 09:49:22 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <m.chehab@samsung.com> | 2014-07-04 15:11:44 -0400 |
commit | a85fd20fb62e5720ea4831b132334abc618972dd (patch) | |
tree | 9fc9eecc8c11a5617de048ee857a7d4942f9d5f1 | |
parent | 7e49027e62b9cb8addcd00f7498d389469f119d4 (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.c | 8 |
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)) |