Hi Sakari, On Wednesday 02 October 2013 16:45:16 Sakari Ailus wrote: > Dequeueing events was is entirely possible even if none are subscribed, was or is ? :-) > leading to sleeping indefinitely. Fix this by returning -ENOENT when no > events are subscribed. > > Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> > --- > drivers/media/v4l2-core/v4l2-event.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/v4l2-core/v4l2-event.c > b/drivers/media/v4l2-core/v4l2-event.c index b53897e..553a800 100644 > --- a/drivers/media/v4l2-core/v4l2-event.c > +++ b/drivers/media/v4l2-core/v4l2-event.c > @@ -77,10 +77,17 @@ int v4l2_event_dequeue(struct v4l2_fh *fh, struct > v4l2_event *event, mutex_unlock(fh->vdev->lock); > > do { > - ret = wait_event_interruptible(fh->wait, > - fh->navailable != 0); > + bool subscribed; > + ret = wait_event_interruptible( > + fh->wait, > + fh->navailable != 0 || > + !(subscribed = v4l2_event_has_subscribed(fh))); > if (ret < 0) > break; > + if (!subscribed) { > + ret = -EIO; > + break; > + } > > ret = __v4l2_event_dequeue(fh, event); > } while (ret == -ENOENT); -- Regards, Laurent Pinchart -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html