x86/ftrace: Remove SYSTEM_BOOTING exceptions
authorPeter Zijlstra <peterz@infradead.org>
Tue, 25 Oct 2022 19:39:47 +0000 (21:39 +0200)
committerDave Hansen <dave.hansen@linux.intel.com>
Thu, 15 Dec 2022 18:37:26 +0000 (10:37 -0800)
Now that text_poke is available before ftrace, remove the
SYSTEM_BOOTING exceptions.

Specifically, this cures a W+X case during boot.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20221025201057.945960823@infradead.org
arch/x86/kernel/alternative.c
arch/x86/kernel/ftrace.c

index 5cadcea035e044b47972675f0bd9792b8fc46fc0..e240351e0bc12b726b8e150d48dd319082eccdd1 100644 (file)
@@ -1681,11 +1681,6 @@ void __ref text_poke_queue(void *addr, const void *opcode, size_t len, const voi
 {
        struct text_poke_loc *tp;
 
-       if (unlikely(system_state == SYSTEM_BOOTING)) {
-               text_poke_early(addr, opcode, len);
-               return;
-       }
-
        text_poke_flush(addr);
 
        tp = &tp_vec[tp_vec_nr++];
@@ -1707,11 +1702,6 @@ void __ref text_poke_bp(void *addr, const void *opcode, size_t len, const void *
 {
        struct text_poke_loc tp;
 
-       if (unlikely(system_state == SYSTEM_BOOTING)) {
-               text_poke_early(addr, opcode, len);
-               return;
-       }
-
        text_poke_loc_init(&tp, addr, opcode, len, emulate);
        text_poke_bp_batch(&tp, 1);
 }
index bd165004776d93bf998c708cac2ec2567f9739a6..43628b8480fa17e644acbaa38203b11bef3a12cc 100644 (file)
@@ -415,8 +415,7 @@ create_trampoline(struct ftrace_ops *ops, unsigned int *tramp_size)
 
        set_vm_flush_reset_perms(trampoline);
 
-       if (likely(system_state != SYSTEM_BOOTING))
-               set_memory_ro((unsigned long)trampoline, npages);
+       set_memory_ro((unsigned long)trampoline, npages);
        set_memory_x((unsigned long)trampoline, npages);
        return (unsigned long)trampoline;
 fail: