From e93ee6fb8a889e5b6cd4822042c38095c49e7c9d Mon Sep 17 00:00:00 2001 From: Al Viro Date: Tue, 20 Mar 2012 16:27:57 -0400 Subject: [PATCH] --- yaml --- r: 298360 b: refs/heads/master c: a2e1859adb3b05fa99f87a67df9ef2a4b7b04a13 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/aio.c | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 60bc200d404a..764b21156422 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 06af121eab543e5554f7a29538f171a382aaf855 +refs/heads/master: a2e1859adb3b05fa99f87a67df9ef2a4b7b04a13 diff --git a/trunk/fs/aio.c b/trunk/fs/aio.c index fe37a94127e7..da887604dfc5 100644 --- a/trunk/fs/aio.c +++ b/trunk/fs/aio.c @@ -1270,7 +1270,6 @@ static void io_destroy(struct kioctx *ioctx) * locking done by the above calls to ensure this consistency. */ wake_up_all(&ioctx->wait); - put_ioctx(ioctx); /* once for the lookup */ } /* sys_io_setup: @@ -1307,11 +1306,9 @@ SYSCALL_DEFINE2(io_setup, unsigned, nr_events, aio_context_t __user *, ctxp) ret = PTR_ERR(ioctx); if (!IS_ERR(ioctx)) { ret = put_user(ioctx->user_id, ctxp); - if (!ret) { - put_ioctx(ioctx); - return 0; - } - io_destroy(ioctx); + if (ret) + io_destroy(ioctx); + put_ioctx(ioctx); } out: @@ -1329,6 +1326,7 @@ SYSCALL_DEFINE1(io_destroy, aio_context_t, ctx) struct kioctx *ioctx = lookup_ioctx(ctx); if (likely(NULL != ioctx)) { io_destroy(ioctx); + put_ioctx(ioctx); return 0; } pr_debug("EINVAL: io_destroy: invalid context id\n");