mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-09 23:00:21 +00:00
[PATCH] ARM: 2698/1: Enable kernel r/w access to user pages on ARMv6
Patch from Catalin Marinas cpu_v6_set_pte() sets the kernel access rights to r/o for user pages (L_PTE_USER) when neither L_PTE_WRITE nor L_PTE_DIRTY are set. This causes a kernel data abort when writing the TLS value in the 0xffff0000 page. This patch enables the kernel r/w access. Signed-off-by: Catalin Marinas Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
5932ae3f5d
commit
79042f087b
@ -132,8 +132,8 @@ ENTRY(cpu_v6_switch_mm)
|
|||||||
* 100x 1 0 1 r/o no acc
|
* 100x 1 0 1 r/o no acc
|
||||||
* 10x0 1 0 1 r/o no acc
|
* 10x0 1 0 1 r/o no acc
|
||||||
* 1011 0 0 1 r/w no acc
|
* 1011 0 0 1 r/w no acc
|
||||||
* 110x 1 1 0 r/o r/o
|
* 110x 0 1 0 r/w r/o
|
||||||
* 11x0 1 1 0 r/o r/o
|
* 11x0 0 1 0 r/w r/o
|
||||||
* 1111 0 1 1 r/w r/w
|
* 1111 0 1 1 r/w r/w
|
||||||
*/
|
*/
|
||||||
ENTRY(cpu_v6_set_pte)
|
ENTRY(cpu_v6_set_pte)
|
||||||
@ -150,7 +150,7 @@ ENTRY(cpu_v6_set_pte)
|
|||||||
tst r1, #L_PTE_USER
|
tst r1, #L_PTE_USER
|
||||||
orrne r2, r2, #AP1 | nG
|
orrne r2, r2, #AP1 | nG
|
||||||
tstne r2, #APX
|
tstne r2, #APX
|
||||||
eorne r2, r2, #AP0
|
bicne r2, r2, #APX | AP0
|
||||||
|
|
||||||
tst r1, #L_PTE_YOUNG
|
tst r1, #L_PTE_YOUNG
|
||||||
biceq r2, r2, #APX | AP1 | AP0
|
biceq r2, r2, #APX | AP1 | AP0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user