mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
895a37028a
Previously pgattr_change_is_safe() was overly-strict and complained
(e.g. "[ 116.262743] __check_safe_pte_update: unsafe attribute change:
0x0560000043768fc3 -> 0x0160000043768fc3") if it saw any SW bits change
in a live PTE. There is no such restriction on SW bits in the Arm ARM.
Until now, no SW bits have been updated in live mappings via the
set_ptes() route. PTE_DIRTY would be updated live, but this is handled
by ptep_set_access_flags() which does not call pgattr_change_is_safe().
However, with the introduction of uffd-wp for arm64, there is core-mm
code that does ptep_get(); pte_clear_uffd_wp(); set_ptes(); which
triggers this false warning.
Silence this warning by masking out the SW bits during checks.
The bug isn't technically in the highlighted commit below, but that's
where bisecting would likely lead as its what made the bug user-visible.
Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
Fixes:
|
||
---|---|---|
.. | ||
cache.S | ||
context.c | ||
contpte.c | ||
copypage.c | ||
dma-mapping.c | ||
extable.c | ||
fault.c | ||
fixmap.c | ||
flush.c | ||
hugetlbpage.c | ||
init.c | ||
ioremap.c | ||
kasan_init.c | ||
Makefile | ||
mmap.c | ||
mmu.c | ||
mteswap.c | ||
pageattr.c | ||
pgd.c | ||
physaddr.c | ||
proc.S | ||
ptdump_debugfs.c | ||
ptdump.c | ||
trans_pgd-asm.S | ||
trans_pgd.c |