Skip to content

Commit 11a8926

Browse files
author
Fox Snowpatch
committed
1 parent d88a1b4 commit 11a8926

1 file changed

Lines changed: 13 additions & 29 deletions

File tree

arch/powerpc/include/asm/text-patching.h

Lines changed: 13 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -221,40 +221,24 @@ static inline unsigned long ppc_global_function_entry(void *func)
221221
* - For ABIv1, we lookup the dot variant.
222222
* - For ABIv2, we return the local entry point.
223223
*/
224-
static inline unsigned long ppc_kallsyms_lookup_name(const char *name)
224+
static inline unsigned long __ppc_kallsyms_lookup_name(const char *name)
225225
{
226-
unsigned long addr;
227-
#ifdef CONFIG_PPC64_ELF_ABI_V1
228-
/* check for dot variant */
229-
char dot_name[1 + KSYM_NAME_LEN];
230-
bool dot_appended = false;
231-
232-
if (strnlen(name, KSYM_NAME_LEN) >= KSYM_NAME_LEN)
233-
return 0;
234-
235-
if (name[0] != '.') {
236-
dot_name[0] = '.';
237-
dot_name[1] = '\0';
238-
strlcat(dot_name, name, sizeof(dot_name));
239-
dot_appended = true;
240-
} else {
241-
dot_name[0] = '\0';
242-
strlcat(dot_name, name, sizeof(dot_name));
243-
}
244-
addr = kallsyms_lookup_name(dot_name);
245-
if (!addr && dot_appended)
246-
/* Let's try the original non-dot symbol lookup */
247-
addr = kallsyms_lookup_name(name);
248-
#elif defined(CONFIG_PPC64_ELF_ABI_V2)
249-
addr = kallsyms_lookup_name(name);
250-
if (addr)
226+
unsigned long addr = kallsyms_lookup_name(name);
227+
228+
if (IS_ENABLED(CONFIG_PPC64_ELF_ABI_V1) && !addr)
229+
addr = kallsyms_lookup_name(name + 1);
230+
if (IS_ENABLED(CONFIG_PPC64_ELF_ABI_V2) && addr)
251231
addr = ppc_function_entry((void *)addr);
252-
#else
253-
addr = kallsyms_lookup_name(name);
254-
#endif
232+
255233
return addr;
256234
}
257235

236+
#ifdef CONFIG_PPC64_ELF_ABI_V1
237+
#define ppc_kallsyms_lookup_name(x) __ppc_kallsyms_lookup_name("." x)
238+
#else
239+
#define ppc_kallsyms_lookup_name(x) __ppc_kallsyms_lookup_name(x)
240+
#endif
241+
258242
/*
259243
* Some instruction encodings commonly used in dynamic ftracing
260244
* and function live patching.

0 commit comments

Comments
 (0)