[PATCH -tip v3 0/2] kprobes/x86: Another way to make insn buffer RO and cleanup
From: Masami Hiramatsu
Date: Fri Aug 18 2017 - 04:23:50 EST
Hi,
This series modifies how to handle RO insn buffer and
cleans up addressof operators.
The 1st patch changes the RO insn buffer handling: instead
of using set_memory_ro/rw to modify the buffer, it prepares
new instructions in another buffer and write it with
text_poke() as suggested by Ingo Molnar (Thanks!).
Since the text_poke() is safely modifying code by
mapping alias pages, it can write RO pages.
This also override alloc_insn_page() so that it returns
ROX page directly.
The 2nd one is not changed. It is a cleanup patch
to remove addressof operators ("&") since
it is meaningless anymore.
V3 has just a following update:
- [1/2] Not to just add set_memory_ro(), introduce new
patch to change the way to handle RO pages.
Thanks,
---
Masami Hiramatsu (2):
kprobes/x86: Make insn buffer always ROX and use text_poke
kprobes/x86: Remove addressof operators
arch/x86/include/asm/kprobes.h | 4 +-
arch/x86/kernel/kprobes/common.h | 6 ++-
arch/x86/kernel/kprobes/core.c | 61 +++++++++++++++++++++------------
arch/x86/kernel/kprobes/opt.c | 71 +++++++++++++++++++++-----------------
kernel/kprobes.c | 2 +
5 files changed, 86 insertions(+), 58 deletions(-)
--
Masami Hiramatsu <mhiramat@xxxxxxxxxx>