]>
Commit | Line | Data |
---|---|---|
2b834b08 FG |
1 | From b4cf3c107f8f1d2da2b606e9d08e241be7000d65 Mon Sep 17 00:00:00 2001 |
2 | From: Seth Forshee <seth.forshee@canonical.com> | |
3 | Date: Wed, 3 May 2017 08:34:47 -0500 | |
4 | Subject: [PATCH 1/4] Revert "mm/ksm: handle protnone saved writes when making | |
5 | page write protect" | |
6 | ||
7 | This reverts commit c228a1037cd6bd0064472ea282e3730a342d6fca. | |
8 | ||
9 | Signed-off-by: Seth Forshee <seth.forshee@canonical.com> | |
10 | --- | |
11 | include/asm-generic/pgtable.h | 8 -------- | |
12 | mm/ksm.c | 9 ++------- | |
13 | 2 files changed, 2 insertions(+), 15 deletions(-) | |
14 | ||
15 | diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h | |
16 | index 8c8ba48bef0b..b6f3a8a4b738 100644 | |
17 | --- a/include/asm-generic/pgtable.h | |
18 | +++ b/include/asm-generic/pgtable.h | |
19 | @@ -200,10 +200,6 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addres | |
20 | #define pte_mk_savedwrite pte_mkwrite | |
21 | #endif | |
22 | ||
23 | -#ifndef pte_clear_savedwrite | |
24 | -#define pte_clear_savedwrite pte_wrprotect | |
25 | -#endif | |
26 | - | |
27 | #ifndef pmd_savedwrite | |
28 | #define pmd_savedwrite pmd_write | |
29 | #endif | |
30 | @@ -212,10 +208,6 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addres | |
31 | #define pmd_mk_savedwrite pmd_mkwrite | |
32 | #endif | |
33 | ||
34 | -#ifndef pmd_clear_savedwrite | |
35 | -#define pmd_clear_savedwrite pmd_wrprotect | |
36 | -#endif | |
37 | - | |
38 | #ifndef __HAVE_ARCH_PMDP_SET_WRPROTECT | |
39 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE | |
40 | static inline void pmdp_set_wrprotect(struct mm_struct *mm, | |
41 | diff --git a/mm/ksm.c b/mm/ksm.c | |
42 | index abc05187168a..9dd2e58fb6dc 100644 | |
43 | --- a/mm/ksm.c | |
44 | +++ b/mm/ksm.c | |
45 | @@ -880,8 +880,7 @@ static int write_protect_page(struct vm_area_struct *vma, struct page *page, | |
46 | if (WARN_ONCE(!pvmw.pte, "Unexpected PMD mapping?")) | |
47 | goto out_unlock; | |
48 | ||
49 | - if (pte_write(*pvmw.pte) || pte_dirty(*pvmw.pte) || | |
50 | - (pte_protnone(*pvmw.pte) && pte_savedwrite(*pvmw.pte))) { | |
51 | + if (pte_write(*pvmw.pte) || pte_dirty(*pvmw.pte)) { | |
52 | pte_t entry; | |
53 | ||
54 | swapped = PageSwapCache(page); | |
55 | @@ -906,11 +905,7 @@ static int write_protect_page(struct vm_area_struct *vma, struct page *page, | |
56 | } | |
57 | if (pte_dirty(entry)) | |
58 | set_page_dirty(page); | |
59 | - | |
60 | - if (pte_protnone(entry)) | |
61 | - entry = pte_mkclean(pte_clear_savedwrite(entry)); | |
62 | - else | |
63 | - entry = pte_mkclean(pte_wrprotect(entry)); | |
64 | + entry = pte_mkclean(pte_wrprotect(entry)); | |
65 | set_pte_at_notify(mm, pvmw.address, pvmw.pte, entry); | |
66 | } | |
67 | *orig_pte = *pvmw.pte; | |
68 | -- | |
69 | 2.7.4 | |
70 |