aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/video/v4l2-event.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/media/video/v4l2-event.c b/drivers/media/video/v4l2-event.c
index 9f56f18d509f..4d01f17497f6 100644
--- a/drivers/media/video/v4l2-event.c
+++ b/drivers/media/video/v4l2-event.c
@@ -285,6 +285,7 @@ int v4l2_event_unsubscribe(struct v4l2_fh *fh,
285{ 285{
286 struct v4l2_subscribed_event *sev; 286 struct v4l2_subscribed_event *sev;
287 unsigned long flags; 287 unsigned long flags;
288 int i;
288 289
289 if (sub->type == V4L2_EVENT_ALL) { 290 if (sub->type == V4L2_EVENT_ALL) {
290 v4l2_event_unsubscribe_all(fh); 291 v4l2_event_unsubscribe_all(fh);
@@ -295,6 +296,11 @@ int v4l2_event_unsubscribe(struct v4l2_fh *fh,
295 296
296 sev = v4l2_event_subscribed(fh, sub->type, sub->id); 297 sev = v4l2_event_subscribed(fh, sub->type, sub->id);
297 if (sev != NULL) { 298 if (sev != NULL) {
299 /* Remove any pending events for this subscription */
300 for (i = 0; i < sev->in_use; i++) {
301 list_del(&sev->events[sev_pos(sev, i)].list);
302 fh->navailable--;
303 }
298 list_del(&sev->list); 304 list_del(&sev->list);
299 sev->fh = NULL; 305 sev->fh = NULL;
300 } 306 }