--=_courier-11071-1051063064-0001-2
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 7bit
Hi,
Here is a trivial patch fixed a bug in ioctx_alloc(). If
aio_setup_ring() failed, ioctx_alloc() should pass the return error from
aio_setup_ring() back to sys_io_setup().
Please apply. Thanks.
--=_courier-11071-1051063064-0001-2
Content-Type: text/x-patch; name="aiofix.patch"; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment; filename=aiofix.patch
diff -urNp linux-2.5.68/fs/aio.c 2568/fs/aio.c
--- linux-2.5.68/fs/aio.c Sat Apr 19 19:49:25 2003
+++ 2568/fs/aio.c Tue Apr 22 17:52:21 2003
@@ -204,6 +204,7 @@ static struct kioctx *ioctx_alloc(unsign
{
struct mm_struct *mm;
struct kioctx *ctx;
+ int ret =3D 0;
=20
/* Prevent overflows */
if ((nr_events > (0x10000000U / sizeof(struct io_event))) ||
@@ -233,7 +234,8 @@ static struct kioctx *ioctx_alloc(unsign
INIT_LIST_HEAD(&ctx->run_list);
INIT_WORK(&ctx->wq, aio_kick_handler, ctx);
=20
- if (aio_setup_ring(ctx) < 0)
+ ret =3D aio_setup_ring(ctx);
+ if (unlikely(ret < 0))
goto out_freectx;
=20
/* limit the number of system wide aios */
@@ -259,7 +261,7 @@ out_cleanup:
=20
out_freectx:
kmem_cache_free(kioctx_cachep, ctx);
- ctx =3D ERR_PTR(-ENOMEM);
+ ctx =3D ERR_PTR(ret);
=20
dprintk("aio: error allocating ioctx %p\n", ctx);
return ctx;
--=_courier-11071-1051063064-0001-2--