From 59b9b03452bcf43b48dadca0487c7d49d15ad711 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Wed, 26 Oct 2011 05:40:27 -0300 Subject: [PATCH] --- yaml --- r: 275368 b: refs/heads/master c: 78c87e863bb3350426fecd14912fd0a546c58ec0 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/media/video/v4l2-event.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 65816218e577..9a3f0e022057 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b36b505965e374b284166c2e6b9c1d369d663ea9 +refs/heads/master: 78c87e863bb3350426fecd14912fd0a546c58ec0 diff --git a/trunk/drivers/media/video/v4l2-event.c b/trunk/drivers/media/video/v4l2-event.c index 9f56f18d509f..4d01f17497f6 100644 --- a/trunk/drivers/media/video/v4l2-event.c +++ b/trunk/drivers/media/video/v4l2-event.c @@ -285,6 +285,7 @@ int v4l2_event_unsubscribe(struct v4l2_fh *fh, { struct v4l2_subscribed_event *sev; unsigned long flags; + int i; if (sub->type == V4L2_EVENT_ALL) { v4l2_event_unsubscribe_all(fh); @@ -295,6 +296,11 @@ int v4l2_event_unsubscribe(struct v4l2_fh *fh, sev = v4l2_event_subscribed(fh, sub->type, sub->id); if (sev != NULL) { + /* Remove any pending events for this subscription */ + for (i = 0; i < sev->in_use; i++) { + list_del(&sev->events[sev_pos(sev, i)].list); + fh->navailable--; + } list_del(&sev->list); sev->fh = NULL; }