From: Greg Kroah-Hartman Date: Fri, 21 Apr 2017 09:41:01 +0000 (+0200) Subject: 4.10-stable patches X-Git-Tag: v3.18.50~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=210c9a7033140b18bf8a9449d85e9660b17c6e76;p=thirdparty%2Fkernel%2Fstable-queue.git 4.10-stable patches added patches: s390-mm-fix-cmma-vs-ksm-vs-others.patch --- diff --git a/queue-4.10/s390-mm-fix-cmma-vs-ksm-vs-others.patch b/queue-4.10/s390-mm-fix-cmma-vs-ksm-vs-others.patch new file mode 100644 index 00000000000..719cda2bcf2 --- /dev/null +++ b/queue-4.10/s390-mm-fix-cmma-vs-ksm-vs-others.patch @@ -0,0 +1,36 @@ +From a8f60d1fadf7b8b54449fcc9d6b15248917478ba Mon Sep 17 00:00:00 2001 +From: Christian Borntraeger +Date: Sun, 9 Apr 2017 22:09:38 +0200 +Subject: s390/mm: fix CMMA vs KSM vs others + +From: Christian Borntraeger + +commit a8f60d1fadf7b8b54449fcc9d6b15248917478ba upstream. + +On heavy paging with KSM I see guest data corruption. Turns out that +KSM will add pages to its tree, where the mapping return true for +pte_unused (or might become as such later). KSM will unmap such pages +and reinstantiate with different attributes (e.g. write protected or +special, e.g. in replace_page or write_protect_page)). This uncovered +a bug in our pagetable handling: We must remove the unused flag as +soon as an entry becomes present again. + +Signed-of-by: Christian Borntraeger +Signed-off-by: Martin Schwidefsky +Signed-off-by: Greg Kroah-Hartman + +--- + arch/s390/include/asm/pgtable.h | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/arch/s390/include/asm/pgtable.h ++++ b/arch/s390/include/asm/pgtable.h +@@ -1029,6 +1029,8 @@ int get_guest_storage_key(struct mm_stru + static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, + pte_t *ptep, pte_t entry) + { ++ if (pte_present(entry)) ++ pte_val(entry) &= ~_PAGE_UNUSED; + if (mm_has_pgste(mm)) + ptep_set_pte_at(mm, addr, ptep, entry); + else