[patch] eventfd/kaio integration fix

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Andrew Morton <akpm@...>
Cc: Linux Kernel Mailing List <linux-kernel@...>, Zach Brown <zach.brown@...>, Jeff Roberson <jroberson@...>
Date: Wednesday, April 9, 2008 - 2:45 pm

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);
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[patch] eventfd/kaio integration fix, Davide Libenzi, (Wed Apr 9, 2:45 pm)
Re: [patch] eventfd/kaio integration fix, Oliver Pinter, (Sun Apr 13, 8:29 am)
Re: [patch] eventfd/kaio integration fix, Davide Libenzi, (Sun Apr 13, 6:57 pm)
Re: [patch] eventfd/kaio integration fix, Oliver Pinter, (Mon Apr 14, 1:56 pm)
Re: [patch] eventfd/kaio integration fix, Davide Libenzi, (Mon Apr 14, 2:02 pm)
Re: [patch] eventfd/kaio integration fix, Andrew Morton, (Wed Apr 9, 3:08 pm)
Re: [patch] eventfd/kaio integration fix, Davide Libenzi, (Wed Apr 9, 3:19 pm)
Re: [patch] eventfd/kaio integration fix, Jeff Roberson, (Wed Apr 9, 3:33 pm)