lkml.org 
[lkml]   [2009]   [Jun]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[KVM PATCH v2 1/2] Allow waiters to be notified about the eventfd file* going away, and give
    Date
    From: Davide Libenzi <davidel@xmailserver.org>

    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.

    This is a feature, needed by KVM to avoid an awkward workaround when using
    eventdf.

    [gmh: pulled from -mmotm for inclusion in kvm.git]

    Signed-off-by: Davide Libenzi <davidel@xmailserver.org>
    Tested-by: Gregory Haskins <ghaskins@novell.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Gregory Haskins <ghaskins@novell.com>
    ---

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

    diff --git a/fs/eventfd.c b/fs/eventfd.c
    index 3f0e197..72f5f8d 100644
    --- a/fs/eventfd.c
    +++ b/fs/eventfd.c
    @@ -61,7 +61,15 @@ EXPORT_SYMBOL_GPL(eventfd_signal);

    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;
    }



    \
     
     \ /
      Last update: 2009-06-04 14:51    [W:0.021 / U:32.288 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site