[PATCH][2.6-mm] Fix AIO and 4G-4G hang

From: Suparna Bhattacharya
Date: Thu Oct 09 2003 - 00:30:21 EST


This patch appears to fix the hangs seen with AIO and
4G-4G for me. It ensures that the indirect versions of
copy_xxx_user are used during aio retries running in
worker thread context (i.e. access aio issuer's user-space
instead of kernel-space).

Regards
Suparna
--
Suparna Bhattacharya (suparna@xxxxxxxxxx)
Linux Technology Center
IBM Software Labs, India

-------------------------------------------------------
diffstat aio-4g4g-fix.patch

aio.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletion(-)

--- 260t5mm2/fs/aio.c Fri Sep 19 15:15:39 2003
+++ linux-2.6.0-test5-mm4/fs/aio.c Tue Oct 7 23:40:22 2003
@@ -805,18 +814,23 @@ static inline void aio_run_iocbs(struct
* aio_kick_handler:
* Work queue handler triggered to process pending
* retries on an ioctx. Takes on the aio issuer's
- * mm context before running the iocbs.
+ * mm context before running the iocbs, so that
+ * copy_xxx_user operates on the issuer's address
+ * space.
* Run on aiod's context.
*/
static void aio_kick_handler(void *data)
{
struct kioctx *ctx = data;
+ mm_segment_t oldfs = get_fs();

+ set_fs(USER_DS);
use_mm(ctx->mm);
spin_lock_irq(&ctx->ctx_lock);
__aio_run_iocbs(ctx);
unuse_mm(ctx->mm);
spin_unlock_irq(&ctx->ctx_lock);
+ set_fs(oldfs);
}


-
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/