Hi Ingo, What would you think about fixing this way? This makes the instruction buffer always RO and poke it via text_poke.
Thank you, On Fri, 18 Aug 2017 17:22:54 +0900 Masami Hiramatsu <mhira...@kernel.org> wrote: > 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 <mhira...@kernel.org> -- Masami Hiramatsu <mhira...@kernel.org>