Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
[pandora-kernel.git] / fs / eventfd.c
index 4b0a226..8d0c0df 100644 (file)
@@ -118,18 +118,18 @@ static unsigned int eventfd_poll(struct file *file, poll_table *wait)
 {
        struct eventfd_ctx *ctx = file->private_data;
        unsigned int events = 0;
-       unsigned long flags;
+       u64 count;
 
        poll_wait(file, &ctx->wqh, wait);
+       smp_rmb();
+       count = ctx->count;
 
-       spin_lock_irqsave(&ctx->wqh.lock, flags);
-       if (ctx->count > 0)
+       if (count > 0)
                events |= POLLIN;
-       if (ctx->count == ULLONG_MAX)
+       if (count == ULLONG_MAX)
                events |= POLLERR;
-       if (ULLONG_MAX - 1 > ctx->count)
+       if (ULLONG_MAX - 1 > count)
                events |= POLLOUT;
-       spin_unlock_irqrestore(&ctx->wqh.lock, flags);
 
        return events;
 }