return NULL;
 }
 
-void io_eventfd_signal(struct io_ring_ctx *ctx)
+void io_eventfd_signal(struct io_ring_ctx *ctx, bool cqe_event)
 {
+       bool skip = false, put_ref = true;
        struct io_ev_fd *ev_fd;
 
        ev_fd = io_eventfd_grab(ctx);
-       if (ev_fd)
-               io_eventfd_release(ev_fd, __io_eventfd_signal(ev_fd));
-}
-
-void io_eventfd_flush_signal(struct io_ring_ctx *ctx)
-{
-       struct io_ev_fd *ev_fd;
-
-       ev_fd = io_eventfd_grab(ctx);
-       if (ev_fd) {
-               bool skip, put_ref = true;
+       if (!ev_fd)
+               return;
 
+       if (cqe_event) {
                /*
                 * Eventfd should only get triggered when at least one event
                 * has been posted. Some applications rely on the eventfd
                skip = ctx->cached_cq_tail == ev_fd->last_cq_tail;
                ev_fd->last_cq_tail = ctx->cached_cq_tail;
                spin_unlock(&ctx->completion_lock);
-
-               if (!skip)
-                       put_ref = __io_eventfd_signal(ev_fd);
-
-               io_eventfd_release(ev_fd, put_ref);
        }
+
+       if (!skip)
+               put_ref = __io_eventfd_signal(ev_fd);
+       io_eventfd_release(ev_fd, put_ref);
 }
 
 int io_eventfd_register(struct io_ring_ctx *ctx, void __user *arg,
 
                        unsigned int eventfd_async);
 int io_eventfd_unregister(struct io_ring_ctx *ctx);
 
-void io_eventfd_flush_signal(struct io_ring_ctx *ctx);
-void io_eventfd_signal(struct io_ring_ctx *ctx);
+void io_eventfd_signal(struct io_ring_ctx *ctx, bool cqe_event);
 
        if (ctx->drain_active)
                io_queue_deferred(ctx);
        if (ctx->has_evfd)
-               io_eventfd_flush_signal(ctx);
+               io_eventfd_signal(ctx, true);
 }
 
 static inline void __io_cq_lock(struct io_ring_ctx *ctx)
                if (ctx->flags & IORING_SETUP_TASKRUN_FLAG)
                        atomic_or(IORING_SQ_TASKRUN, &ctx->rings->sq_flags);
                if (ctx->has_evfd)
-                       io_eventfd_signal(ctx);
+                       io_eventfd_signal(ctx, false);
        }
 
        nr_wait = atomic_read(&ctx->cq_wait_nr);