mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00

To avoid a useless nop on top of every uaccess enable/disable and make life easier for objtool, replace static branches by ASM feature fixups that will nop KUAP enabling instructions out in the unlikely case KUAP is disabled at boottime. Leave it as is on book3s/64 for now, it will be handled later when objtool is activated on PPC64. Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://msgid.link/671948788024fd890ec4ed175bc332dab8664ea5.1689091022.git.christophe.leroy@csgroup.eu
30 lines
615 B
C
30 lines
615 B
C
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
/*
|
|
* This file contains the routines for initializing kernel userspace protection
|
|
*/
|
|
|
|
#include <linux/export.h>
|
|
#include <linux/init.h>
|
|
#include <linux/printk.h>
|
|
#include <linux/smp.h>
|
|
|
|
#include <asm/kup.h>
|
|
#include <asm/smp.h>
|
|
|
|
#ifdef CONFIG_PPC_KUAP
|
|
void setup_kuap(bool disabled)
|
|
{
|
|
if (disabled) {
|
|
if (IS_ENABLED(CONFIG_40x))
|
|
disable_kuep = true;
|
|
if (smp_processor_id() == boot_cpuid)
|
|
cur_cpu_spec->mmu_features &= ~MMU_FTR_KUAP;
|
|
return;
|
|
}
|
|
|
|
pr_info("Activating Kernel Userspace Access Protection\n");
|
|
|
|
prevent_user_access(KUAP_READ_WRITE);
|
|
}
|
|
#endif
|