From: Greg Kroah-Hartman Date: Fri, 21 Apr 2017 09:40:29 +0000 (+0200) Subject: 4.4-stable patches X-Git-Tag: v3.18.50~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3805e57e58a6f4c2dbb2ba77c44548be6f36eb95;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: s390-mm-fix-cmma-vs-ksm-vs-others.patch --- diff --git a/queue-4.4/s390-mm-fix-cmma-vs-ksm-vs-others.patch b/queue-4.4/s390-mm-fix-cmma-vs-ksm-vs-others.patch new file mode 100644 index 00000000000..c9b577a1618 --- /dev/null +++ b/queue-4.4/s390-mm-fix-cmma-vs-ksm-vs-others.patch @@ -0,0 +1,37 @@ +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 +@@ -829,6 +829,8 @@ static inline void set_pte_at(struct mm_ + { + pgste_t pgste; + ++ if (pte_present(entry)) ++ pte_val(entry) &= ~_PAGE_UNUSED; + if (mm_has_pgste(mm)) { + pgste = pgste_get_lock(ptep); + pgste_val(pgste) &= ~_PGSTE_GPS_ZERO; diff --git a/queue-4.4/series b/queue-4.4/series index 87e63b7beb5..50191f16a48 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -5,3 +5,4 @@ tracing-allocate-the-snapshot-buffer-before-enabling-probe.patch ring-buffer-have-ring_buffer_iter_empty-return-true-when-empty.patch cifs-do-not-send-echoes-before-negotiate-is-complete.patch cifs-remove-bad_network_name-flag.patch +s390-mm-fix-cmma-vs-ksm-vs-others.patch