Patch "x86/mm: Fix {pmd,pud}_{set,clear}_flags()" has been added to the 4.14-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
x86/mm: Fix {pmd,pud}_{set,clear}_flags()to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
x86-mm-fix-pmd-pud-_-set-clear-_flags.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
842cef9113c2120f74f645111ded1e020193d84cMon Sep 17 00:00:00 2001
From: Jan Beulich <[email protected]>
Date: Mon, 19 Feb 2018 07:48:11 -0700
Subject: x86/mm: Fix {pmd,pud}_{set,clear}_flags()
From: Jan Beulich <[email protected]>
commit 842cef9113c2120f74f645111ded1e020193d84c upstream.
Just like pte_{set,clear}_flags() their PMD and PUD counterparts should not do any address translation. This was outright wrong under Xen (causing a dead boot with no useful output on "suitable" systems), and produced needlessly more complicated code (even if just slightly) when paravirt was enabled.
--- arch/x86/include/asm/pgtable.h | 8 ++++---- arch/x86/include/asm/pgtable_types.h | 10 ++++++++++ 2 files changed, 14 insertions(+), 4 deletions(-)
arch/x86/include/asm/pgtable.h +4 -4
@@ -350,14 +350,14 @@ static inline pmd_t pmd_set_flags(pmd_t {pmdval_t v =native_pmd_val (pmd); -return __pmd (v | set); +return native_make_pmd (v | set); }static inline pmd_t pmd_clear_flags (pmd_t pmd,pmdval_t clear) {pmdval_t v =native_pmd_val (pmd); -return __pmd (v & ~clear); +return native_make_pmd (v & ~clear); }static inline pmd_t pmd_mkold (pmd_t pmd)
@@ -409,14 +409,14 @@ static inline pud_t pud_set_flags(pud_t {pudval_t v =native_pud_val (pud); -return __pud (v | set); +return native_make_pud (v | set); }static inline pud_t pud_clear_flags (pud_t pud,pudval_t clear) {pudval_t v =native_pud_val (pud); -return __pud (v & ~clear); +return native_make_pud (v & ~clear); }static inline pud_t pud_mkold (pud_t pud)
arch/x86/include/asm/pgtable_types.h +10 -0
@@ -323,6 +323,11 @@ static inline pudval_t native_pud_val(pu#else #include <asm-generic/pgtable-nopud.h> +static inline pud_t native_make_pud (pudval_t val) +{ +return (pud_t ) { .p4d.pgd =native_make_pgd (val) }; +} +static inline pudval_t native_pud_val (pud_t pud) {return native_pgd_val (pud.p4d.pgd);
@@ -344,6 +349,11 @@ static inline pmdval_t native_pmd_val(pm#else #include <asm-generic/pgtable-nopmd.h> +static inline pmd_t native_make_pmd (pmdval_t val) +{ +return (pmd_t ) { .pud.p4d.pgd =native_make_pgd (val) }; +} +static inline pmdval_t native_pmd_val (pmd_t pmd) {return native_pgd_val (pmd.pud.p4d.pgd);
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/x86-mm-fix-pmd-pud-_-set-clear-_flags.patch