]> Pileus Git - ~andy/linux/blobdiff - fs/aio.c
aio: nullify aio->ring_pages after freeing it
[~andy/linux] / fs / aio.c
index ee77dc13d5b22370899ed96e12be13e26a4aaad3..ad460d78d6c5d9e3c967d9d2560e1847542c3c57 100644 (file)
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -196,8 +196,10 @@ static void aio_free_ring(struct kioctx *ctx)
 
        put_aio_ring_file(ctx);
 
-       if (ctx->ring_pages && ctx->ring_pages != ctx->internal_pages)
+       if (ctx->ring_pages && ctx->ring_pages != ctx->internal_pages) {
                kfree(ctx->ring_pages);
+               ctx->ring_pages = NULL;
+       }
 }
 
 static int aio_ring_mmap(struct file *file, struct vm_area_struct *vma)
@@ -610,7 +612,6 @@ static struct kioctx *ioctx_alloc(unsigned nr_events)
 err_cleanup:
        aio_nr_sub(ctx->max_reqs);
 err:
-       aio_free_ring(ctx);
        free_percpu(ctx->cpu);
        free_percpu(ctx->reqs.pcpu_count);
        free_percpu(ctx->users.pcpu_count);