[RFC PATCH] uprobes: copy to user-space xol page with proper cache flushing
Russell King - ARM Linux
linux at arm.linux.org.uk
Tue Apr 15 11:47:26 PDT 2014
On Tue, Apr 15, 2014 at 02:30:54PM -0400, David Miller wrote:
> Russell, if for example userland stores into the instruction stream
> to patch an instruction, what needs to be done on ARM?
Hi David,
I'm afraid I won't be too responsive this week, but I'll try to provide
input where I can. So I'll try to cover all points in the previous
discussion in this reply.
I think your suggestion that we should be writing directly to userspace
from uprobes is definitely the correct way forward, as that nicely takes
any d-cache aliasing issues completely out of the picture.
However, unlike your "most braindead sparc" CPU, the i-cache doesn't
snoop d-cache stores at all. However, this is something that we already
deal with since self-modifying code has to work, so (from userspace) we
have a syscall that is used to sort that out. Internally in the kernel,
this translates to:
ret = flush_cache_user_range(start, end)
This deals with whatever the CPU requires to be able to correctly execute
code which has been previously written in the range - and only actions on
the currently mapped userspace.
I hope this helps.
--
FTTC broadband for 0.8mile line: now at 9.7Mbps down 460kbps up... slowly
improving, and getting towards what was expected from it.
More information about the linux-arm-kernel
mailing list