eventfd currently emits a POLLHUP wakeup on f_ops->release() to generate a
"release" callback. This lets eventfd clients know if the eventfd is about
to go away and is very useful particularly for in-kernel clients. However,
as it stands today it is not possible to use this feature of eventfd in a
race-free way. This patch changes the POLLHUP code to use the locked variant
to rectify this problem.

Signed-off-by: Gregory Haskins <ghask...@novell.com>
CC: Davide Libenzi <davi...@xmailserver.org>
---

 fs/eventfd.c |    7 +------
 1 files changed, 1 insertions(+), 6 deletions(-)

diff --git a/fs/eventfd.c b/fs/eventfd.c
index d9849a1..31d12de 100644
--- a/fs/eventfd.c
+++ b/fs/eventfd.c
@@ -105,12 +105,7 @@ static int eventfd_release(struct inode *inode, struct 
file *file)
 {
        struct eventfd_ctx *ctx = file->private_data;
 
-       /*
-        * No need to hold the lock here, since we are on the file cleanup
-        * path and the ones still attached to the wait queue will be
-        * serialized by wake_up_locked_poll().
-        */
-       wake_up_locked_poll(&ctx->wqh, POLLHUP);
+       wake_up_poll(&ctx->wqh, POLLHUP);
        eventfd_ctx_put(ctx);
        return 0;
 }

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to