Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-or-later
0002 /*
0003  * This file contains the routines for initializing kernel userspace protection
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