lkml.org 
[lkml]   [2008]   [Apr]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [patch] eventfd/kaio integration fix
for 2.6.22.y ?

On 4/9/08, Davide Libenzi <davidel@xmailserver.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@xmailserver.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@vger.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


\
 
 \ /
  Last update: 2008-04-13 14:33    [W:0.072 / U:0.312 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site