All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@kernel.org>
To: linux-kernel@vger.kernel.org
Cc: Juergen Gross <jgross@suse.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Borislav Petkov <bp@alien8.de>,
	Thomas Gleixner <tglx@linutronix.de>
Subject: [PATCH 37/41] x86/alternatives: Rename 'text_poke_int3()' to 'text_poke_int3_now()'
Date: Thu, 27 Mar 2025 21:53:50 +0100	[thread overview]
Message-ID: <20250327205355.378659-38-mingo@kernel.org> (raw)
In-Reply-To: <20250327205355.378659-1-mingo@kernel.org>

In the current name it's not obvious that the main difference
between text_poke_int3() and text_poke_int3_queue() is that
text_poke_int3() patches the kernel immediately.

Make this more apparent by renaming it to text_poke_int3_now().

Also extend the documentation to better describe its purpose.

Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/include/asm/text-patching.h | 2 +-
 arch/x86/kernel/alternative.c        | 7 ++++---
 arch/x86/kernel/ftrace.c             | 8 ++++----
 arch/x86/kernel/jump_label.c         | 2 +-
 arch/x86/kernel/kprobes/opt.c        | 2 +-
 arch/x86/kernel/static_call.c        | 2 +-
 arch/x86/net/bpf_jit_comp.c          | 2 +-
 7 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/arch/x86/include/asm/text-patching.h b/arch/x86/include/asm/text-patching.h
index 7deb06aec467..611957617278 100644
--- a/arch/x86/include/asm/text-patching.h
+++ b/arch/x86/include/asm/text-patching.h
@@ -39,7 +39,7 @@ extern void *text_poke_copy(void *addr, const void *opcode, size_t len);
 extern void *text_poke_copy_locked(void *addr, const void *opcode, size_t len, bool core_ok);
 extern void *text_poke_set(void *addr, int c, size_t len);
 extern int text_poke_int3_handler(struct pt_regs *regs);
-extern void text_poke_int3(void *addr, const void *opcode, size_t len, const void *emulate);
+extern void text_poke_int3_now(void *addr, const void *opcode, size_t len, const void *emulate);
 
 extern void text_poke_int3_queue(void *addr, const void *opcode, size_t len, const void *emulate);
 extern void text_poke_int3_finish(void);
diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
index 2807d35c7676..6e2fab1768e2 100644
--- a/arch/x86/kernel/alternative.c
+++ b/arch/x86/kernel/alternative.c
@@ -2881,7 +2881,7 @@ void __ref text_poke_int3_queue(void *addr, const void *opcode, size_t len, cons
 }
 
 /**
- * text_poke_int3() -- update instructions on live kernel on SMP
+ * text_poke_int3_now() -- update instruction on live kernel on SMP immediately
  * @addr:	address to patch
  * @opcode:	opcode of new instruction
  * @len:	length to copy
@@ -2889,9 +2889,10 @@ void __ref text_poke_int3_queue(void *addr, const void *opcode, size_t len, cons
  *
  * Update a single instruction with the vector in the stack, avoiding
  * dynamically allocated memory. This function should be used when it is
- * not possible to allocate memory.
+ * not possible to allocate memory for a vector. The single instruction
+ * is patched in immediately.
  */
-void __ref text_poke_int3(void *addr, const void *opcode, size_t len, const void *emulate)
+void __ref text_poke_int3_now(void *addr, const void *opcode, size_t len, const void *emulate)
 {
 	text_poke_int3_loc_add(addr, opcode, len, emulate);
 
diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
index ff3cdd08f28f..40b1c218ee86 100644
--- a/arch/x86/kernel/ftrace.c
+++ b/arch/x86/kernel/ftrace.c
@@ -186,11 +186,11 @@ int ftrace_update_ftrace_func(ftrace_func_t func)
 
 	ip = (unsigned long)(&ftrace_call);
 	new = ftrace_call_replace(ip, (unsigned long)func);
-	text_poke_int3((void *)ip, new, MCOUNT_INSN_SIZE, NULL);
+	text_poke_int3_now((void *)ip, new, MCOUNT_INSN_SIZE, NULL);
 
 	ip = (unsigned long)(&ftrace_regs_call);
 	new = ftrace_call_replace(ip, (unsigned long)func);
-	text_poke_int3((void *)ip, new, MCOUNT_INSN_SIZE, NULL);
+	text_poke_int3_now((void *)ip, new, MCOUNT_INSN_SIZE, NULL);
 
 	return 0;
 }
@@ -492,7 +492,7 @@ void arch_ftrace_update_trampoline(struct ftrace_ops *ops)
 	mutex_lock(&text_mutex);
 	/* Do a safe modify in case the trampoline is executing */
 	new = ftrace_call_replace(ip, (unsigned long)func);
-	text_poke_int3((void *)ip, new, MCOUNT_INSN_SIZE, NULL);
+	text_poke_int3_now((void *)ip, new, MCOUNT_INSN_SIZE, NULL);
 	mutex_unlock(&text_mutex);
 }
 
@@ -586,7 +586,7 @@ static int ftrace_mod_jmp(unsigned long ip, void *func)
 	const char *new;
 
 	new = ftrace_jmp_replace(ip, (unsigned long)func);
-	text_poke_int3((void *)ip, new, MCOUNT_INSN_SIZE, NULL);
+	text_poke_int3_now((void *)ip, new, MCOUNT_INSN_SIZE, NULL);
 	return 0;
 }
 
diff --git a/arch/x86/kernel/jump_label.c b/arch/x86/kernel/jump_label.c
index f72738e6d7d4..e5b58c81dfaf 100644
--- a/arch/x86/kernel/jump_label.c
+++ b/arch/x86/kernel/jump_label.c
@@ -102,7 +102,7 @@ __jump_label_transform(struct jump_entry *entry,
 		return;
 	}
 
-	text_poke_int3((void *)jump_entry_code(entry), jlp.code, jlp.size, NULL);
+	text_poke_int3_now((void *)jump_entry_code(entry), jlp.code, jlp.size, NULL);
 }
 
 static void __ref jump_label_transform(struct jump_entry *entry,
diff --git a/arch/x86/kernel/kprobes/opt.c b/arch/x86/kernel/kprobes/opt.c
index e13d4a2d9244..54bc5e7c6886 100644
--- a/arch/x86/kernel/kprobes/opt.c
+++ b/arch/x86/kernel/kprobes/opt.c
@@ -488,7 +488,7 @@ void arch_optimize_kprobes(struct list_head *oplist)
 		insn_buff[0] = JMP32_INSN_OPCODE;
 		*(s32 *)(&insn_buff[1]) = rel;
 
-		text_poke_int3(op->kp.addr, insn_buff, JMP32_INSN_SIZE, NULL);
+		text_poke_int3_now(op->kp.addr, insn_buff, JMP32_INSN_SIZE, NULL);
 
 		list_del_init(&op->list);
 	}
diff --git a/arch/x86/kernel/static_call.c b/arch/x86/kernel/static_call.c
index 3331a7c90b9a..146cc27848df 100644
--- a/arch/x86/kernel/static_call.c
+++ b/arch/x86/kernel/static_call.c
@@ -108,7 +108,7 @@ static void __ref __static_call_transform(void *insn, enum insn_type type,
 	if (system_state == SYSTEM_BOOTING || modinit)
 		return text_poke_early(insn, code, size);
 
-	text_poke_int3(insn, code, size, emulate);
+	text_poke_int3_now(insn, code, size, emulate);
 }
 
 static void __static_call_validate(u8 *insn, bool tail, bool tramp)
diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
index 1e2a4b7a6b73..8d08c8ff3e50 100644
--- a/arch/x86/net/bpf_jit_comp.c
+++ b/arch/x86/net/bpf_jit_comp.c
@@ -629,7 +629,7 @@ static int __bpf_arch_text_poke(void *ip, enum bpf_text_poke_type t,
 		goto out;
 	ret = 1;
 	if (memcmp(ip, new_insn, X86_PATCH_SIZE)) {
-		text_poke_int3(ip, new_insn, X86_PATCH_SIZE, NULL);
+		text_poke_int3_now(ip, new_insn, X86_PATCH_SIZE, NULL);
 		ret = 0;
 	}
 out:
-- 
2.45.2


  parent reply	other threads:[~2025-03-27 20:55 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-27 20:53 [PATCH 00/41] Simplify, reorganize and clean up the x86 INT3 based batch-patching code (alternative.c) Ingo Molnar
2025-03-27 20:53 ` [PATCH 01/41] x86/alternatives: Rename 'struct bp_patching_desc' to 'struct int3_patching_desc' Ingo Molnar
2025-03-27 20:53 ` [PATCH 02/41] x86/alternatives: Rename 'bp_refs' to 'int3_refs' Ingo Molnar
2025-03-27 20:53 ` [PATCH 03/41] x86/alternatives: Rename 'text_poke_bp_batch()' to 'text_poke_int3_batch()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 04/41] x86/alternatives: Rename 'text_poke_bp()' to 'text_poke_int3()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 05/41] x86/alternatives: Rename 'poke_int3_handler()' to 'text_poke_int3_handler()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 06/41] x86/alternatives: Rename 'poking_mm' to 'text_poke_mm' Ingo Molnar
2025-03-27 20:53 ` [PATCH 07/41] x86/alternatives: Rename 'text_poke_addr' to 'text_poke_int3_addr' Ingo Molnar
2025-03-27 20:53 ` [PATCH 08/41] x86/alternatives: Rename 'poking_addr' to 'text_poke_addr' Ingo Molnar
2025-03-27 20:53 ` [PATCH 09/41] x86/alternatives: Rename 'bp_desc' to 'int3_desc' Ingo Molnar
2025-03-27 20:53 ` [PATCH 10/41] x86/alternatives: Remove duplicate 'text_poke_early()' prototype Ingo Molnar
2025-03-27 20:53 ` [PATCH 11/41] x86/alternatives: Update comments in int3_emulate_push() Ingo Molnar
2025-03-27 20:53 ` [PATCH 12/41] x86/alternatives: Remove the confusing, inaccurate & unnecessary 'temp_mm_state_t' abstraction Ingo Molnar
2025-03-27 20:53 ` [PATCH 13/41] x86/alternatives: Rename 'text_poke_flush()' to 'text_poke_int3_flush()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 14/41] x86/alternatives: Rename 'text_poke_finish()' to 'text_poke_int3_finish()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 15/41] x86/alternatives: Rename 'text_poke_queue()' to 'text_poke_int3_queue()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 16/41] x86/alternatives: Rename 'text_poke_loc_init()' to 'text_poke_int3_loc_init()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 17/41] x86/alternatives: Rename 'struct text_poke_loc' to 'struct text_poke_int3_loc' Ingo Molnar
2025-03-27 20:53 ` [PATCH 18/41] x86/alternatives: Rename 'struct int3_patching_desc' to 'struct text_poke_int3_vec' Ingo Molnar
2025-03-27 20:53 ` [PATCH 19/41] x86/alternatives: Rename 'int3_desc' to 'int3_vec' Ingo Molnar
2025-03-27 20:53 ` [PATCH 20/41] x86/alternatives: Add text_mutex) assert to text_poke_int3_flush() Ingo Molnar
2025-03-27 20:53 ` [PATCH 21/41] x86/alternatives: Assert that text_poke_int3_handler() can only ever handle 'tp_vec[]' based requests Ingo Molnar
2025-03-27 20:53 ` [PATCH 22/41] x86/alternatives: Use non-inverted logic instead of 'tp_order_fail()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 23/41] x86/alternatives: Remove the 'addr == NULL means forced-flush' hack from text_poke_int3_finish()/text_poke_int3_flush()/tp_addr_ordered() Ingo Molnar
2025-03-27 20:53 ` [PATCH 24/41] x86/alternatives: Simplify text_poke_int3() by using tp_vec and existing APIs Ingo Molnar
2025-03-27 20:53 ` [PATCH 25/41] x86/alternatives: Assert input parameters in text_poke_int3_batch() Ingo Molnar
2025-03-27 20:53 ` [PATCH 26/41] x86/alternatives: Introduce 'struct text_poke_int3_array' and move tp_vec and tp_vec_nr to it Ingo Molnar
2025-03-27 20:53 ` [PATCH 27/41] x86/alternatives: Remove the tp_vec indirection Ingo Molnar
2025-03-27 20:53 ` [PATCH 28/41] x86/alternatives: Rename 'try_get_desc()' to 'try_get_tp_array()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 29/41] x86/alternatives: Rename 'put_desc()' to 'put_tp_array()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 30/41] x86/alternatives: Simplify try_get_tp_array() Ingo Molnar
2025-03-27 20:53 ` [PATCH 31/41] x86/alternatives: Simplify text_poke_int3_handler() Ingo Molnar
2025-03-27 20:53 ` [PATCH 32/41] x86/alternatives: Simplify text_poke_int3_batch() Ingo Molnar
2025-03-27 20:53 ` [PATCH 33/41] x86/alternatives: Rename 'text_poke_int3_batch()' to 'text_poke_int3_batch_process()' Ingo Molnar
2025-03-27 20:53 ` [PATCH 34/41] x86/alternatives: Rename 'int3_refs' to 'tp_array_refs' Ingo Molnar
2025-03-27 20:53 ` [PATCH 35/41] x86/alternatives: Move the tp_array manipulation into text_poke_int3_loc_init() and rename it to text_poke_int3_loc_add() Ingo Molnar
2025-03-27 20:53 ` [PATCH 36/41] x86/alternatives: Remove the mixed-patching restriction on text_poke_int3() Ingo Molnar
2025-03-27 20:53 ` Ingo Molnar [this message]
2025-03-27 20:53 ` [PATCH 38/41] x86/alternatives: Add documentation for text_poke_int3_queue() Ingo Molnar
2025-03-27 20:53 ` [PATCH 39/41] x86/alternatives: Move tp_array completion from text_poke_int3_finish() and text_poke_int3_flush() to text_poke_int3_batch_process() Ingo Molnar
2025-03-27 20:53 ` [PATCH 40/41] x86/alternatives: Rename 'text_poke_sync()' to 'text_poke_sync_each_cpu()' Ingo Molnar
2025-04-02  4:10   ` H. Peter Anvin
2025-04-03 15:05     ` Ingo Molnar
2025-03-27 20:53 ` [PATCH 41/41] x86/alternatives: Simplify tp_addr_ordered() Ingo Molnar
2025-03-27 22:19 ` [PATCH 00/41] Simplify, reorganize and clean up the x86 INT3 based batch-patching code (alternative.c) Linus Torvalds
2025-03-28 10:10   ` Ingo Molnar
2025-04-01 14:55   ` Peter Zijlstra

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250327205355.378659-38-mingo@kernel.org \
    --to=mingo@kernel.org \
    --cc=bp@alien8.de \
    --cc=hpa@zytor.com \
    --cc=jgross@suse.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.