In preparation of support of inline static calls on powerpc, provide
trampoline address when updating sites, so that when the destination
function is too far for a direct function call, the call site is
patched with a call to the trampoline.

Signed-off-by: Christophe Leroy <christophe.le...@csgroup.eu>
---
 arch/x86/kernel/static_call.c | 2 +-
 kernel/static_call_inline.c   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kernel/static_call.c b/arch/x86/kernel/static_call.c
index 4eefaac64c6c..00b2ea40cbef 100644
--- a/arch/x86/kernel/static_call.c
+++ b/arch/x86/kernel/static_call.c
@@ -158,7 +158,7 @@ void arch_static_call_transform(void *site, void *tramp, 
void *func, bool tail)
 {
        mutex_lock(&text_mutex);
 
-       if (tramp) {
+       if (tramp && !site) {
                __static_call_validate(tramp, true, true);
                __static_call_transform(tramp, __sc_insn(!func, true), func, 
false);
        }
diff --git a/kernel/static_call_inline.c b/kernel/static_call_inline.c
index 5259cda486d0..7fefbb3d8074 100644
--- a/kernel/static_call_inline.c
+++ b/kernel/static_call_inline.c
@@ -206,7 +206,7 @@ void __static_call_update(struct static_call_key *key, void 
*tramp, void *func)
                                continue;
                        }
 
-                       arch_static_call_transform(site_addr, NULL, func,
+                       arch_static_call_transform(site_addr, tramp, func,
                                                   static_call_is_tail(site));
                }
        }
-- 
2.47.0


Reply via email to