diff options
author | Luden <luden@ghostmail.com> | 2016-02-13 23:56:40 +0100 |
---|---|---|
committer | Ziyan <jaraidaniel@gmail.com> | 2016-05-01 23:35:56 +0200 |
commit | 7fd80cc6a3049e630d84d2baaae87fa1eece486c (patch) | |
tree | 964da6cecbb4ffffdb6cc238d5013c2c6a9bb478 /mm | |
parent | c3f47a7451568ae3d3e33f75666fc37439794223 (diff) | |
download | kernel_samsung_tuna-7fd80cc6a3049e630d84d2baaae87fa1eece486c.tar.gz kernel_samsung_tuna-7fd80cc6a3049e630d84d2baaae87fa1eece486c.tar.bz2 kernel_samsung_tuna-7fd80cc6a3049e630d84d2baaae87fa1eece486c.zip |
ksm_migrate_page() changes from the mainline.
Diffstat (limited to 'mm')
-rw-r--r-- | mm/ksm.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -1784,6 +1784,14 @@ void ksm_migrate_page(struct page *newpage, struct page *oldpage) if (stable_node) { VM_BUG_ON(stable_node->kpfn != page_to_pfn(oldpage)); stable_node->kpfn = page_to_pfn(newpage); + /* + * newpage->mapping was set in advance; now we need smp_wmb() + * to make sure that the new stable_node->kpfn is visible + * to get_ksm_page() before it can see that oldpage->mapping + * has gone stale (or that PageSwapCache has been cleared). + */ + smp_wmb(); + set_page_stable_node(oldpage, NULL); } } |