From 66a759eb4d85542f900eba2b5f71f7bb3e2b73d4 Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Wed, 19 May 2004 02:32:47 -0700 Subject: [PATCH] blk_run_page() race fix blk_run_page() is incorrectly using page->mapping, which makes it racy against removal from swapcache. Make block_sync_page() use page_mapping(), and remove bkl_run_page(), which only had one caller. --- fs/buffer.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'fs/buffer.c') diff --git a/fs/buffer.c b/fs/buffer.c index 8c6abdcb22cf..9f76190d4654 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -2960,7 +2960,12 @@ EXPORT_SYMBOL(try_to_free_buffers); int block_sync_page(struct page *page) { - blk_run_page(page); + struct address_space *mapping; + + smp_mb(); + mapping = page_mapping(page); + if (mapping) + blk_run_backing_dev(mapping->backing_dev_info, page); return 0; } -- cgit v1.2.3