powerpc/kuep: Remove 'nosmep' boot time parameter except for book3s/64
Deactivating KUEP at boot time is unrelevant for PPC32 and BOOK3E/64. Remove it. It allows to refactor setup_kuep() via a __weak function that only PPC64s will overide for now. Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> [mpe: Fix CONFIG_PPC_BOOKS_64 -> CONFIG_PPC_BOOK3S_64 typo] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/4c36df18b41c988c4512f45d96220486adbe4c99.1634627931.git.christophe.leroy@csgroup.eu
This commit is contained in:
parent
70428da94c
commit
6754862249
@ -3378,7 +3378,7 @@
|
|||||||
Disable SMAP (Supervisor Mode Access Prevention)
|
Disable SMAP (Supervisor Mode Access Prevention)
|
||||||
even if it is supported by processor.
|
even if it is supported by processor.
|
||||||
|
|
||||||
nosmep [X86,PPC]
|
nosmep [X86,PPC64s]
|
||||||
Disable SMEP (Supervisor Mode Execution Prevention)
|
Disable SMEP (Supervisor Mode Execution Prevention)
|
||||||
even if it is supported by processor.
|
even if it is supported by processor.
|
||||||
|
|
||||||
|
@ -33,12 +33,7 @@ extern bool disable_kuap;
|
|||||||
#include <linux/pgtable.h>
|
#include <linux/pgtable.h>
|
||||||
|
|
||||||
void setup_kup(void);
|
void setup_kup(void);
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_KUEP
|
|
||||||
void setup_kuep(bool disabled);
|
void setup_kuep(bool disabled);
|
||||||
#else
|
|
||||||
static inline void setup_kuep(bool disabled) { }
|
|
||||||
#endif /* CONFIG_PPC_KUEP */
|
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_KUAP
|
#ifdef CONFIG_PPC_KUAP
|
||||||
void setup_kuap(bool disabled);
|
void setup_kuap(bool disabled);
|
||||||
|
@ -9,5 +9,4 @@ endif
|
|||||||
obj-y += mmu.o mmu_context.o
|
obj-y += mmu.o mmu_context.o
|
||||||
obj-$(CONFIG_PPC_BOOK3S_603) += nohash_low.o
|
obj-$(CONFIG_PPC_BOOK3S_603) += nohash_low.o
|
||||||
obj-$(CONFIG_PPC_BOOK3S_604) += hash_low.o tlb.o
|
obj-$(CONFIG_PPC_BOOK3S_604) += hash_low.o tlb.o
|
||||||
obj-$(CONFIG_PPC_KUEP) += kuep.o
|
|
||||||
obj-$(CONFIG_PPC_KUAP) += kuap.o
|
obj-$(CONFIG_PPC_KUAP) += kuap.o
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
#include <asm/code-patching.h>
|
|
||||||
#include <asm/kup.h>
|
|
||||||
#include <asm/smp.h>
|
|
||||||
|
|
||||||
void setup_kuep(bool disabled)
|
|
||||||
{
|
|
||||||
if (smp_processor_id() != boot_cpuid)
|
|
||||||
return;
|
|
||||||
|
|
||||||
pr_info("Activating Kernel Userspace Execution Prevention\n");
|
|
||||||
}
|
|
@ -20,6 +20,7 @@
|
|||||||
#include <linux/pgtable.h>
|
#include <linux/pgtable.h>
|
||||||
#include <asm/pgalloc.h>
|
#include <asm/pgalloc.h>
|
||||||
#include <asm/kup.h>
|
#include <asm/kup.h>
|
||||||
|
#include <asm/smp.h>
|
||||||
|
|
||||||
phys_addr_t memstart_addr __ro_after_init = (phys_addr_t)~0ull;
|
phys_addr_t memstart_addr __ro_after_init = (phys_addr_t)~0ull;
|
||||||
EXPORT_SYMBOL_GPL(memstart_addr);
|
EXPORT_SYMBOL_GPL(memstart_addr);
|
||||||
@ -33,6 +34,9 @@ bool disable_kuap = !IS_ENABLED(CONFIG_PPC_KUAP);
|
|||||||
|
|
||||||
static int __init parse_nosmep(char *p)
|
static int __init parse_nosmep(char *p)
|
||||||
{
|
{
|
||||||
|
if (!IS_ENABLED(CONFIG_PPC_BOOK3S_64))
|
||||||
|
return 0;
|
||||||
|
|
||||||
disable_kuep = true;
|
disable_kuep = true;
|
||||||
pr_warn("Disabling Kernel Userspace Execution Prevention\n");
|
pr_warn("Disabling Kernel Userspace Execution Prevention\n");
|
||||||
return 0;
|
return 0;
|
||||||
@ -47,6 +51,17 @@ static int __init parse_nosmap(char *p)
|
|||||||
}
|
}
|
||||||
early_param("nosmap", parse_nosmap);
|
early_param("nosmap", parse_nosmap);
|
||||||
|
|
||||||
|
void __weak setup_kuep(bool disabled)
|
||||||
|
{
|
||||||
|
if (!IS_ENABLED(CONFIG_PPC_KUEP) || disabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (smp_processor_id() != boot_cpuid)
|
||||||
|
return;
|
||||||
|
|
||||||
|
pr_info("Activating Kernel Userspace Execution Prevention\n");
|
||||||
|
}
|
||||||
|
|
||||||
void setup_kup(void)
|
void setup_kup(void)
|
||||||
{
|
{
|
||||||
setup_kuap(disable_kuap);
|
setup_kuap(disable_kuap);
|
||||||
|
@ -240,13 +240,3 @@ void __init mmu_init_secondary(int cpu)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_SMP */
|
#endif /* CONFIG_SMP */
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_KUEP
|
|
||||||
void setup_kuep(bool disabled)
|
|
||||||
{
|
|
||||||
if (smp_processor_id() != boot_cpuid)
|
|
||||||
return;
|
|
||||||
|
|
||||||
pr_info("Activating Kernel Userspace Execution Prevention\n");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
@ -212,13 +212,6 @@ void __init setup_initial_memory_limit(phys_addr_t first_memblock_base,
|
|||||||
memblock_set_current_limit(min_t(u64, first_memblock_size, SZ_32M));
|
memblock_set_current_limit(min_t(u64, first_memblock_size, SZ_32M));
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_KUEP
|
|
||||||
void setup_kuep(bool disabled)
|
|
||||||
{
|
|
||||||
pr_info("Activating Kernel Userspace Execution Prevention\n");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_KUAP
|
#ifdef CONFIG_PPC_KUAP
|
||||||
struct static_key_false disable_kuap_key;
|
struct static_key_false disable_kuap_key;
|
||||||
EXPORT_SYMBOL(disable_kuap_key);
|
EXPORT_SYMBOL(disable_kuap_key);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user