123456789101112131415161718192021222324252627282930313233343536 |
- // SPDX-License-Identifier: GPL-2.0-or-later
- #include <asm/kup.h>
- #include <asm/smp.h>
- struct static_key_false disable_kuap_key;
- EXPORT_SYMBOL(disable_kuap_key);
- void kuap_lock_all_ool(void)
- {
- kuap_lock_all();
- }
- EXPORT_SYMBOL(kuap_lock_all_ool);
- void kuap_unlock_all_ool(void)
- {
- kuap_unlock_all();
- }
- EXPORT_SYMBOL(kuap_unlock_all_ool);
- void setup_kuap(bool disabled)
- {
- if (!disabled) {
- kuap_lock_all_ool();
- init_mm.context.sr0 |= SR_KS;
- current->thread.sr0 |= SR_KS;
- }
- if (smp_processor_id() != boot_cpuid)
- return;
- if (disabled)
- static_branch_enable(&disable_kuap_key);
- else
- pr_info("Activating Kernel Userspace Access Protection\n");
- }
|