On 12/19, tip-bot for Marcin Nowakowski wrote:
uprobes: Fix uprobes on MIPS, allow for a cache flush after ixol breakpoint creation
Commit:
72e6ae285a1d ('ARM: 8043/1: uprobes need icache flush after xol write'
... has introduced an arch-specific method to ensure all caches are
flushed appropriately after an instruction is written to an XOL page.
when this page is already mmaped,
However, when the XOL area is created and the out-of-line breakpoint
instruction is copied, caches are not flushed at all and stale data may
be found in icache.
but in this case the page is not mmaped yet, the probed application will
take a page fault if it tries to execute this insn,
Replace a simple copy_to_page() with arch_uprobe_copy_ixol() to allow
the arch to ensure all caches are updated accordingly.
This change fixes uprobes on MIPS InterAptiv (tested on Creator Ci40).
OK, I know nothing about MIPS, but could you help me understand this change?
See above. If we really need flush_icache_range() here then perhaps we should
modify install_special_mapping() and/or __do_fault/special_mapping_fault paths
instead?