]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 16 Aug 2018 11:57:02 +0000 (13:57 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 16 Aug 2018 11:57:02 +0000 (13:57 +0200)
added patches:
x86-mm-disable-ioremap-free-page-handling-on-x86-pae.patch

queue-4.14/series
queue-4.14/x86-mm-disable-ioremap-free-page-handling-on-x86-pae.patch [new file with mode: 0644]

index 00c90abe058e108f979dfb6c66df8e2dd4e597ca..1ecc038ab290e5f74bfd60d48813481059fdcc7d 100644 (file)
@@ -1,2 +1,3 @@
 x86-l1tf-fix-build-error-seen-if-config_kvm_intel-is-disabled.patch
 x86-i8259-add-missing-include-file.patch
+x86-mm-disable-ioremap-free-page-handling-on-x86-pae.patch
diff --git a/queue-4.14/x86-mm-disable-ioremap-free-page-handling-on-x86-pae.patch b/queue-4.14/x86-mm-disable-ioremap-free-page-handling-on-x86-pae.patch
new file mode 100644 (file)
index 0000000..1f41dca
--- /dev/null
@@ -0,0 +1,74 @@
+From f967db0b9ed44ec3057a28f3b28efc51df51b835 Mon Sep 17 00:00:00 2001
+From: Toshi Kani <toshi.kani@hpe.com>
+Date: Wed, 27 Jun 2018 08:13:46 -0600
+Subject: x86/mm: Disable ioremap free page handling on x86-PAE
+
+From: Toshi Kani <toshi.kani@hpe.com>
+
+commit f967db0b9ed44ec3057a28f3b28efc51df51b835 upstream.
+
+ioremap() supports pmd mappings on x86-PAE.  However, kernel's pmd
+tables are not shared among processes on x86-PAE.  Therefore, any
+update to sync'd pmd entries need re-syncing.  Freeing a pte page
+also leads to a vmalloc fault and hits the BUG_ON in vmalloc_sync_one().
+
+Disable free page handling on x86-PAE.  pud_free_pmd_page() and
+pmd_free_pte_page() simply return 0 if a given pud/pmd entry is present.
+This assures that ioremap() does not update sync'd pmd entries at the
+cost of falling back to pte mappings.
+
+Fixes: 28ee90fe6048 ("x86/mm: implement free pmd/pte page interfaces")
+Reported-by: Joerg Roedel <joro@8bytes.org>
+Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Cc: mhocko@suse.com
+Cc: akpm@linux-foundation.org
+Cc: hpa@zytor.com
+Cc: cpandya@codeaurora.org
+Cc: linux-mm@kvack.org
+Cc: linux-arm-kernel@lists.infradead.org
+Cc: stable@vger.kernel.org
+Cc: Andrew Morton <akpm@linux-foundation.org>
+Cc: Michal Hocko <mhocko@suse.com>
+Cc: "H. Peter Anvin" <hpa@zytor.com>
+Cc: <stable@vger.kernel.org>
+Link: https://lkml.kernel.org/r/20180627141348.21777-2-toshi.kani@hpe.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/x86/mm/pgtable.c |   19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+--- a/arch/x86/mm/pgtable.c
++++ b/arch/x86/mm/pgtable.c
+@@ -712,6 +712,7 @@ int pmd_clear_huge(pmd_t *pmd)
+       return 0;
+ }
++#ifdef CONFIG_X86_64
+ /**
+  * pud_free_pmd_page - Clear pud entry and free pmd page.
+  * @pud: Pointer to a PUD.
+@@ -759,4 +760,22 @@ int pmd_free_pte_page(pmd_t *pmd)
+       return 1;
+ }
++
++#else /* !CONFIG_X86_64 */
++
++int pud_free_pmd_page(pud_t *pud)
++{
++      return pud_none(*pud);
++}
++
++/*
++ * Disable free page handling on x86-PAE. This assures that ioremap()
++ * does not update sync'd pmd entries. See vmalloc_sync_one().
++ */
++int pmd_free_pte_page(pmd_t *pmd)
++{
++      return pmd_none(*pmd);
++}
++
++#endif /* CONFIG_X86_64 */
+ #endif        /* CONFIG_HAVE_ARCH_HUGE_VMAP */