From: Greg Kroah-Hartman Date: Thu, 16 Aug 2018 11:57:02 +0000 (+0200) Subject: 4.14-stable patches X-Git-Tag: v3.18.119~19 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d7094bbc6135887f0944032778ccccd440da38ed;p=thirdparty%2Fkernel%2Fstable-queue.git 4.14-stable patches added patches: x86-mm-disable-ioremap-free-page-handling-on-x86-pae.patch --- diff --git a/queue-4.14/series b/queue-4.14/series index 00c90abe058..1ecc038ab29 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -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 index 00000000000..1f41dcae25c --- /dev/null +++ b/queue-4.14/x86-mm-disable-ioremap-free-page-handling-on-x86-pae.patch @@ -0,0 +1,74 @@ +From f967db0b9ed44ec3057a28f3b28efc51df51b835 Mon Sep 17 00:00:00 2001 +From: Toshi Kani +Date: Wed, 27 Jun 2018 08:13:46 -0600 +Subject: x86/mm: Disable ioremap free page handling on x86-PAE + +From: Toshi Kani + +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 +Signed-off-by: Toshi Kani +Signed-off-by: Thomas Gleixner +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 +Cc: Michal Hocko +Cc: "H. Peter Anvin" +Cc: +Link: https://lkml.kernel.org/r/20180627141348.21777-2-toshi.kani@hpe.com +Signed-off-by: Greg Kroah-Hartman + +--- + 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 */