0001
0002
0003
0004
0005
0006 #include <linux/export.h>
0007 #include <linux/init.h>
0008 #include <linux/jump_label.h>
0009 #include <linux/printk.h>
0010 #include <linux/smp.h>
0011
0012 #include <asm/kup.h>
0013 #include <asm/smp.h>
0014
0015 #ifdef CONFIG_PPC_KUAP
0016 struct static_key_false disable_kuap_key;
0017 EXPORT_SYMBOL(disable_kuap_key);
0018
0019 void setup_kuap(bool disabled)
0020 {
0021 if (disabled) {
0022 if (IS_ENABLED(CONFIG_40x))
0023 disable_kuep = true;
0024 if (smp_processor_id() == boot_cpuid)
0025 static_branch_enable(&disable_kuap_key);
0026 return;
0027 }
0028
0029 pr_info("Activating Kernel Userspace Access Protection\n");
0030
0031 __prevent_user_access(KUAP_READ_WRITE);
0032 }
0033 #endif