[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20150619181900.GA20806@redhat.com>
Date: Fri, 19 Jun 2015 20:19:00 +0200
From: Oleg Nesterov <oleg@...hat.com>
To: Al Viro <viro@...IV.linux.org.uk>,
Andrew Morton <akpm@...ux-foundation.org>,
Benjamin LaHaise <bcrl@...ck.org>,
Jeff Moyer <jmoyer@...hat.com>
Cc: linux-aio@...ck.org, linux-kernel@...r.kernel.org
Subject: [PATCH v5 3/3] aio_free_ring: don't do page_count(NULL)
aio_free_ring() can actually see the NULL page in ->ring_pages[],
this can happen if aio_setup_ring() fails.
And in this case page_count(ctx->ring_pages[i]) can OOPS.
Signed-off-by: Oleg Nesterov <oleg@...hat.com>
Reviewed-by: Jeff Moyer <jmoyer@...hat.com>
---
fs/aio.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/fs/aio.c b/fs/aio.c
index 4a360be..9bc1335 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -292,12 +292,12 @@ static void aio_free_ring(struct kioctx *ctx)
put_aio_ring_file(ctx);
for (i = 0; i < ctx->nr_pages; i++) {
- struct page *page;
- pr_debug("pid(%d) [%d] page->count=%d\n", current->pid, i,
- page_count(ctx->ring_pages[i]));
- page = ctx->ring_pages[i];
+ struct page *page = ctx->ring_pages[i];
if (!page)
continue;
+
+ pr_debug("pid(%d) [%d] page->count=%d\n",
+ current->pid, i, page_count(page));
ctx->ring_pages[i] = NULL;
put_page(page);
}
--
1.5.5.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists