2007-10-06 16:26:51

by Yan Zheng

[permalink] [raw]
Subject: [PATCH]AIO: fix cleanup in io_submit_one(...)

Hello,

When IOCB_FLAG_RESFD flag is set and iocb->aio_resfd is incorrect,
statement 'goto out_put_req' is executed. At label 'out_put_req',
aio_put_req(..) is called, which requires 'req->ki_filp' set.

Regards

Signed-off-by: Yan Zheng<[email protected]>
----
diff -ur linux-2.6.23-rc9/fs/aio.c linux/fs/aio.c
--- linux-2.6.23-rc9/fs/aio.c 2007-07-09 07:32:17.000000000 +0800
+++ linux/fs/aio.c 2007-10-07 00:05:10.000000000 +0800
@@ -1562,6 +1562,7 @@
fput(file);
return -EAGAIN;
}
+ req->ki_filp = file;
if (iocb->aio_flags & IOCB_FLAG_RESFD) {
/*
* If the IOCB_FLAG_RESFD flag of aio_flags is set, get an
@@ -1576,7 +1577,6 @@
}
}

- req->ki_filp = file;
ret = put_user(req->ki_key, &user_iocb->aio_key);
if (unlikely(ret)) {
dprintk("EFAULT: aio_key\n");