[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <6101e8c40804130529k353a46a9h8ed1b5fbf6451297@mail.gmail.com>
Date: Sun, 13 Apr 2008 14:29:46 +0200
From: "Oliver Pinter" <oliver.pntr@...il.com>
To: "Davide Libenzi" <davidel@...ilserver.org>
Cc: "Andrew Morton" <akpm@...ux-foundation.org>,
"Linux Kernel Mailing List" <linux-kernel@...r.kernel.org>,
"Zach Brown" <zach.brown@...cle.com>,
"Jeff Roberson" <jroberson@...sapeake.net>
Subject: Re: [patch] eventfd/kaio integration fix
for 2.6.22.y ?
On 4/9/08, Davide Libenzi <davidel@...ilserver.org> wrote:
> Jeff Roberson discovered a race when using kaio eventfd based
> notifications. This patch fixes the race by moving the notification inside
> the spinlocked section of kaio. The operation is safe since eventfd
> spinlock and kaio one are unrelated.
>
>
>
> Signed-off-by: Davide Libenzi <davidel@...ilserver.org>
>
>
> - Davide
>
>
> ---
> fs/aio.c | 17 +++++++++--------
> 1 file changed, 9 insertions(+), 8 deletions(-)
>
> Index: linux-2.6.mod/fs/aio.c
> ===================================================================
> --- linux-2.6.mod.orig/fs/aio.c 2008-04-08 16:25:27.000000000 -0700
> +++ linux-2.6.mod/fs/aio.c 2008-04-09 11:37:10.000000000 -0700
> @@ -936,14 +936,6 @@
> return 1;
> }
>
> - /*
> - * Check if the user asked us to deliver the result through an
> - * eventfd. The eventfd_signal() function is safe to be called
> - * from IRQ context.
> - */
> - if (!IS_ERR(iocb->ki_eventfd))
> - eventfd_signal(iocb->ki_eventfd, 1);
> -
> info = &ctx->ring_info;
>
> /* add a completion event to the ring buffer.
> @@ -992,6 +984,15 @@
> kunmap_atomic(ring, KM_IRQ1);
>
> pr_debug("added to ring %p at [%lu]\n", iocb, tail);
> +
> + /*
> + * Check if the user asked us to deliver the result through an
> + * eventfd. The eventfd_signal() function is safe to be called
> + * from IRQ context.
> + */
> + if (!IS_ERR(iocb->ki_eventfd))
> + eventfd_signal(iocb->ki_eventfd, 1);
> +
> put_rq:
> /* everything turned out well, dispose of the aiocb. */
> ret = __aio_put_req(ctx, iocb);
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@...r.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
--
Thanks,
Oliver
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists