Messages in this thread | | | Date | Sun, 13 Apr 2008 14:29:46 +0200 | From | "Oliver Pinter" <> | Subject | Re: [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
| |