mm: use swp_offset as key in shmem_replace_page()
Subsystems (3)
[email protected]
maintainerPATCH 5/31 mm: use swp_offset as key in shmem_replace_page()
From: Yu Zhao <[email protected]>
Subject: mm: use swp_offset as key in shmem_replace_page()
We changed the key of swap cache tree from swp_entry_t.val to swp_offset. We need to do so in shmem_replace_page() as well.
Hugh said:
: shmem_replace_page() has been wrong since the day I wrote it: good : enough to work on swap "type" 0, which is all most people ever use : (especially those few who need shmem_replace_page() at all), but broken : once there are any non-0 swp_type bits set in the higher order bits.
Fixes f6ab1f7f6b2d ("mm, swap: use offset of swap entry as key of swap cache")
Signed-off-by Yu Zhao <[email protected]>
Reviewed-by Matthew Wilcox <[email protected]>
Acked-by Hugh Dickins <[email protected]>
Cc <[email protected]> [4.9+]
Signed-off-by Andrew Morton <[email protected]>
---
mm/shmem.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
mm/shmem.c renamed from mm/shmem.c~mm-use-swp_offset-as-key-in-shmem_replace_page +4 -2
@@ -1509,11 +1509,13 @@ static int shmem_replace_page(struct pag {struct page *oldpage, *newpage;struct address_space *swap_mapping; +swp_entry_t entry;pgoff_t swap_index;int error; oldpage = *pagep; - swap_index =page_private (oldpage); + entry.val =page_private (oldpage); + swap_index =swp_offset (entry); swap_mapping =page_mapping (oldpage);/*
@@ -1532,7 +1534,7 @@ static int shmem_replace_page(struct pag__SetPageLocked (newpage);__SetPageSwapBacked (newpage);SetPageUptodate (newpage); -set_page_private (newpage, swap_index); +set_page_private (newpage, entry.val);SetPageSwapCache (newpage);/*
_