mirror of https://gitee.com/openkylin/linux.git
xtensa: fix fast_store_prohibited _PAGE_WRITABLE_BIT test
Before _PAGE_WRITABLE_BIT test fast_store_prohibited must make sure that PTE is present. Otherwise 'writable' bit is undefined and may be reused in the 'file offset' or 'swap type' PTE fields. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Signed-off-by: Chris Zankel <chris@zankel.net>
This commit is contained in:
parent
7711ece9b3
commit
51fc41a906
|
@ -1792,10 +1792,15 @@ ENTRY(fast_store_prohibited)
|
|||
l32i a0, a0, 0
|
||||
beqz a0, 2f
|
||||
|
||||
/* Note that we assume _PAGE_WRITABLE_BIT is only set if pte is valid.*/
|
||||
/*
|
||||
* Note that we test _PAGE_WRITABLE_BIT only if PTE is present
|
||||
* and is not PAGE_NONE. See pgtable.h for possible PTE layouts.
|
||||
*/
|
||||
|
||||
_PTE_OFFSET(a0, a1, a4)
|
||||
l32i a4, a0, 0 # read pteval
|
||||
movi a1, _PAGE_CA_INVALID
|
||||
ball a4, a1, 2f
|
||||
bbci.l a4, _PAGE_WRITABLE_BIT, 2f
|
||||
|
||||
movi a1, _PAGE_ACCESSED | _PAGE_DIRTY | _PAGE_HW_WRITE
|
||||
|
|
Loading…
Reference in New Issue