From 22eca178b9835532d829231ff6dd526deacc92bd Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Sun, 5 May 2002 01:09:21 -0700 Subject: [PATCH] [PATCH] radix-tree locking fix __delete_from_swap_cache modifies the radix tree. We need to take the lock for writing. --- mm/swapfile.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index 67bedbf68446..2ced3aaa6a46 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -308,13 +308,13 @@ int remove_exclusive_swap_page(struct page *page) retval = 0; if (p->swap_map[SWP_OFFSET(entry)] == 1) { /* Recheck the page count with the pagecache lock held.. */ - read_lock(&swapper_space.page_lock); + write_lock(&swapper_space.page_lock); if (page_count(page) - !!PagePrivate(page) == 2) { __delete_from_swap_cache(page); SetPageDirty(page); retval = 1; } - read_unlock(&swapper_space.page_lock); + write_unlock(&swapper_space.page_lock); } swap_info_put(p); -- 2.39.5