Re: [patch] eventfd/kaio integration fix

From: Oliver Pinter
Date: Sun Apr 13 2008 - 08:29:57 EST


for 2.6.22.y ?

On 4/9/08, Davide Libenzi <davidel@xxxxxxxxxxxxxxx> 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@xxxxxxxxxxxxxxx>
>
>
> - 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@xxxxxxxxxxxxxxx
> 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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/