Ftrace was one of the last W^X violators; these patches move it over to the generic text_poke() interface and thereby get rid of this oddity.
The first patch has been posted before and was/is part of my (in-progress) static_call and jump_label/jmp8 patch series; but is equally needed here. The second patch cleans up the text_poke batching code, and the third converts ftrace. --- arch/x86/include/asm/ftrace.h | 2 - arch/x86/include/asm/text-patching.h | 28 +- arch/x86/kernel/alternative.c | 156 +++++++-- arch/x86/kernel/ftrace.c | 620 +++++------------------------------ arch/x86/kernel/jump_label.c | 83 ++--- arch/x86/kernel/kprobes/opt.c | 11 +- arch/x86/kernel/traps.c | 9 - 7 files changed, 261 insertions(+), 648 deletions(-)

