public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [patch] eventfd/kaio integration fix
@ 2008-04-09 18:45 Davide Libenzi
  2008-04-09 19:08 ` Andrew Morton
  2008-04-13 12:29 ` Oliver Pinter
  0 siblings, 2 replies; 8+ messages in thread
From: Davide Libenzi @ 2008-04-09 18:45 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Linux Kernel Mailing List, Zach Brown, Jeff Roberson

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);

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2008-04-14 18:02 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-09 18:45 [patch] eventfd/kaio integration fix Davide Libenzi
2008-04-09 19:08 ` Andrew Morton
2008-04-09 19:19   ` Davide Libenzi
2008-04-09 19:33     ` Jeff Roberson
2008-04-13 12:29 ` Oliver Pinter
2008-04-13 22:57   ` Davide Libenzi
2008-04-14 17:56     ` Oliver Pinter
2008-04-14 18:02       ` Davide Libenzi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox