]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 21 Apr 2017 09:40:29 +0000 (11:40 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 21 Apr 2017 09:40:29 +0000 (11:40 +0200)
added patches:
s390-mm-fix-cmma-vs-ksm-vs-others.patch

queue-4.4/s390-mm-fix-cmma-vs-ksm-vs-others.patch [new file with mode: 0644]
queue-4.4/series

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 (file)
index 0000000..c9b577a
--- /dev/null
@@ -0,0 +1,37 @@
+From a8f60d1fadf7b8b54449fcc9d6b15248917478ba Mon Sep 17 00:00:00 2001
+From: Christian Borntraeger <borntraeger@de.ibm.com>
+Date: Sun, 9 Apr 2017 22:09:38 +0200
+Subject: s390/mm: fix CMMA vs KSM vs others
+
+From: Christian Borntraeger <borntraeger@de.ibm.com>
+
+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 <borntraeger@de.ibm.com>
+Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+
+---
+ 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;
index 87e63b7beb59dfcbbfb6003514b2172df7fd381a..50191f16a484c671b631b4900af417428e599aa1 100644 (file)
@@ -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