Message ID | 20090702153806.20186.76377.stgit@dev.haskins.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, 2 Jul 2009, Gregory Haskins wrote: > 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 <ghaskins@novell.com> > CC: Davide Libenzi <davidel@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; > } ACK. BTW, mainline already has the correct wake_up_poll(). - Davide -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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; }
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 <ghaskins@novell.com> CC: Davide Libenzi <davidel@xmailserver.org> --- fs/eventfd.c | 7 +------ 1 files changed, 1 insertions(+), 6 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html