struct vb2_buffer *vb = NULL;
        unsigned long flags;
 
+       /*
+        * poll_wait() MUST be called on the first invocation on all the
+        * potential queues of interest, even if we are not interested in their
+        * events during this first call. Failure to do so will result in
+        * queue's events to be ignored because the poll_table won't be capable
+        * of adding new wait queues thereafter.
+        */
+       poll_wait(file, &q->done_wq, wait);
+
        if (!q->is_output && !(req_events & (EPOLLIN | EPOLLRDNORM)))
                return 0;
        if (q->is_output && !(req_events & (EPOLLOUT | EPOLLWRNORM)))
                return 0;
 
-       poll_wait(file, &q->done_wq, wait);
-
        /*
         * Start file I/O emulator only if streaming API has not been used yet.
         */