summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin LaHaise <bcrl@kvack.org>2013-12-21 15:49:28 -0500
committerBenjamin LaHaise <bcrl@kvack.org>2013-12-21 15:57:09 -0500
commit1881686f842065d2f92ec9c6424830ffc17d23b0 (patch)
treeafb359410d2fa889c9e1b60183e677e9af1449d5
parentb7000adef17a5cce85636e40fa2c2d9851a89e28 (diff)
downloadlinux-exynos-1881686f842065d2f92ec9c6424830ffc17d23b0.tar.gz
linux-exynos-1881686f842065d2f92ec9c6424830ffc17d23b0.tar.bz2
linux-exynos-1881686f842065d2f92ec9c6424830ffc17d23b0.zip
aio: fix kioctx leak introduced by "aio: Fix a trinity splat"
e34ecee2ae791df674dfb466ce40692ca6218e43 reworked the percpu reference counting to correct a bug trinity found. Unfortunately, the change lead to kioctxes being leaked because there was no final reference count to put. Add that reference count back in to fix things. Signed-off-by: Benjamin LaHaise <bcrl@kvack.org> Cc: stable@vger.kernel.org
-rw-r--r--fs/aio.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/aio.c b/fs/aio.c
index 6efb7f6cb22e..fd1c0baf15bb 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -652,7 +652,8 @@ static struct kioctx *ioctx_alloc(unsigned nr_events)
aio_nr += ctx->max_reqs;
spin_unlock(&aio_nr_lock);
- percpu_ref_get(&ctx->users); /* io_setup() will drop this ref */
+ percpu_ref_get(&ctx->users); /* io_setup() will drop this ref */
+ percpu_ref_get(&ctx->reqs); /* free_ioctx_users() will drop this */
err = ioctx_add_table(ctx, mm);
if (err)