Messages in this thread | | | Date | Wed, 03 Jun 2009 15:20:26 -0400 | From | Gregory Haskins <> | Subject | Re: [patch] epoll - send POLLHUP on ->release |
| |
Davide Libenzi wrote: > The following patch allows waiters to be notified about the eventfd file* > going away, and give them a change to unregister from the wait queue. > This is turn allows eventfd users to use the eventfd file* w/out > holding a live reference to it. > After the eventfd user callbacks returns, any usage of the eventfd file* > should be dropped. The eventfd user callback can acquire sleepy locks > since it is invoked lockless. > > > > Signed-off-by: Davide Libenzi <davidel@xmailserver.org> >
Tested-by: Gregory Haskins <ghaskins@novell.com> > > - Davide > > > --- > fs/eventfd.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > Index: linux-2.6.mod/fs/eventfd.c > =================================================================== > --- linux-2.6.mod.orig/fs/eventfd.c 2009-05-27 12:10:03.000000000 -0700 > +++ linux-2.6.mod/fs/eventfd.c 2009-05-27 12:16:57.000000000 -0700 > @@ -59,7 +59,15 @@ int eventfd_signal(struct file *file, in > > static int eventfd_release(struct inode *inode, struct file *file) > { > - kfree(file->private_data); > + 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); > + kfree(ctx); > return 0; > } > >
[unhandled content-type:application/pgp-signature] | |