powerpc/8xx: Add Kernel Userspace Access Protection
This patch adds Kernel Userspace Access Protection on the 8xx. When a page is RO or RW, it is set RO or RW for Key 0 and NA for Key 1. Up to now, the User group is defined with Key 0 for both User and Supervisor. By changing the group to Key 0 for User and Key 1 for Supervisor, this patch prevents the Kernel from being able to access user data. At exception entry, the kernel saves SPRN_MD_AP in the regs struct, and reapply the protection. At exception exit it restores SPRN_MD_AP with the value saved on exception entry. Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> [mpe: Drop allow_read/write_to/from_user() as they're now in kup.h] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Этот коммит содержится в:

коммит произвёл
Michael Ellerman

родитель
06fbe81b59
Коммит
2679f9bd0a
@@ -225,3 +225,15 @@ void __init setup_kuep(bool disabled)
|
||||
mtspr(SPRN_MI_AP, MI_APG_KUEP);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PPC_KUAP
|
||||
void __init setup_kuap(bool disabled)
|
||||
{
|
||||
pr_info("Activating Kernel Userspace Access Protection\n");
|
||||
|
||||
if (disabled)
|
||||
pr_warn("KUAP cannot be disabled yet on 8xx when compiled in\n");
|
||||
|
||||
mtspr(SPRN_MD_AP, MD_APG_KUAP);
|
||||
}
|
||||
#endif
|
||||
|
Ссылка в новой задаче
Block a user