[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()
From: Ingo Molnar
Date: Thu Mar 27 2025 - 17:04:57 EST
Simplifies the code and improves code generation a bit:
text data bss dec hex filename
14769 1017 4112 19898 4dba alternative.o.before
14742 1017 4112 19871 4d9f alternative.o.after
Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx>
---
arch/x86/kernel/alternative.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
index ba322a29aefd..1b523496a2f6 100644
--- a/arch/x86/kernel/alternative.c
+++ b/arch/x86/kernel/alternative.c
@@ -2750,6 +2750,9 @@ static void text_poke_int3_batch_process(void)
if (unlikely(!atomic_dec_and_test(refs)))
atomic_cond_read_acquire(refs, !VAL);
}
+
+ /* They are all completed: */
+ tp_array.nr_entries = 0;
}
static void text_poke_int3_loc_add(void *addr, const void *opcode, size_t len, const void *emulate)
@@ -2857,20 +2860,16 @@ static bool tp_addr_ordered(void *addr)
void text_poke_int3_finish(void)
{
- if (tp_array.nr_entries) {
+ if (tp_array.nr_entries)
text_poke_int3_batch_process();
- tp_array.nr_entries = 0;
- }
}
static void text_poke_int3_flush(void *addr)
{
lockdep_assert_held(&text_mutex);
- if (tp_array.nr_entries == TP_ARRAY_NR_ENTRIES_MAX || !tp_addr_ordered(addr)) {
+ if (tp_array.nr_entries == TP_ARRAY_NR_ENTRIES_MAX || !tp_addr_ordered(addr))
text_poke_int3_batch_process();
- tp_array.nr_entries = 0;
- }
}
/**
--
2.45.2