mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-02 00:24:12 +08:00
powerpc/40x: Always fault when _PAGE_ACCESSED is not set
The kernel expects pte_young() to work regardless of CONFIG_SWAP.
Make sure a minor fault is taken to set _PAGE_ACCESSED when it
is not already set, regardless of the selection of CONFIG_SWAP.
Fixes: 2c74e2586b
("powerpc/40x: Rework 40x PTE access and TLB miss")
Cc: stable@vger.kernel.org
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/b02ca2ed2d3676a096219b48c0f69ec982a75bcf.1602342801.git.christophe.leroy@csgroup.eu
This commit is contained in:
parent
11522448e6
commit
0540b0d2ce
@ -284,11 +284,7 @@ _ENTRY(saved_ksp_limit)
|
|||||||
|
|
||||||
rlwimi r11, r10, 22, 20, 29 /* Compute PTE address */
|
rlwimi r11, r10, 22, 20, 29 /* Compute PTE address */
|
||||||
lwz r11, 0(r11) /* Get Linux PTE */
|
lwz r11, 0(r11) /* Get Linux PTE */
|
||||||
#ifdef CONFIG_SWAP
|
|
||||||
li r9, _PAGE_PRESENT | _PAGE_ACCESSED
|
li r9, _PAGE_PRESENT | _PAGE_ACCESSED
|
||||||
#else
|
|
||||||
li r9, _PAGE_PRESENT
|
|
||||||
#endif
|
|
||||||
andc. r9, r9, r11 /* Check permission */
|
andc. r9, r9, r11 /* Check permission */
|
||||||
bne 5f
|
bne 5f
|
||||||
|
|
||||||
@ -369,11 +365,7 @@ _ENTRY(saved_ksp_limit)
|
|||||||
|
|
||||||
rlwimi r11, r10, 22, 20, 29 /* Compute PTE address */
|
rlwimi r11, r10, 22, 20, 29 /* Compute PTE address */
|
||||||
lwz r11, 0(r11) /* Get Linux PTE */
|
lwz r11, 0(r11) /* Get Linux PTE */
|
||||||
#ifdef CONFIG_SWAP
|
|
||||||
li r9, _PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC
|
li r9, _PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC
|
||||||
#else
|
|
||||||
li r9, _PAGE_PRESENT | _PAGE_EXEC
|
|
||||||
#endif
|
|
||||||
andc. r9, r9, r11 /* Check permission */
|
andc. r9, r9, r11 /* Check permission */
|
||||||
bne 5f
|
bne 5f
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user