Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

sh: ftrace: Fix up syscall tracing build.

Syscall tracing metadata was shuffled around, update accordingly.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>

+2 -74
+2 -74
arch/sh/kernel/ftrace.c
··· 401 401 #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ 402 402 403 403 #ifdef CONFIG_FTRACE_SYSCALLS 404 - 405 - extern unsigned long __start_syscalls_metadata[]; 406 - extern unsigned long __stop_syscalls_metadata[]; 407 404 extern unsigned long *sys_call_table; 408 405 409 - static struct syscall_metadata **syscalls_metadata; 410 - 411 - static struct syscall_metadata *find_syscall_meta(unsigned long *syscall) 406 + unsigned long __init arch_syscall_addr(int nr) 412 407 { 413 - struct syscall_metadata *start; 414 - struct syscall_metadata *stop; 415 - char str[KSYM_SYMBOL_LEN]; 416 - 417 - 418 - start = (struct syscall_metadata *)__start_syscalls_metadata; 419 - stop = (struct syscall_metadata *)__stop_syscalls_metadata; 420 - kallsyms_lookup((unsigned long) syscall, NULL, NULL, NULL, str); 421 - 422 - for ( ; start < stop; start++) { 423 - if (start->name && !strcmp(start->name, str)) 424 - return start; 425 - } 426 - 427 - return NULL; 408 + return (unsigned long)sys_call_table[nr]; 428 409 } 429 - 430 - struct syscall_metadata *syscall_nr_to_meta(int nr) 431 - { 432 - if (!syscalls_metadata || nr >= FTRACE_SYSCALL_MAX || nr < 0) 433 - return NULL; 434 - 435 - return syscalls_metadata[nr]; 436 - } 437 - 438 - int syscall_name_to_nr(char *name) 439 - { 440 - int i; 441 - 442 - if (!syscalls_metadata) 443 - return -1; 444 - for (i = 0; i < NR_syscalls; i++) 445 - if (syscalls_metadata[i]) 446 - if (!strcmp(syscalls_metadata[i]->name, name)) 447 - return i; 448 - return -1; 449 - } 450 - 451 - void set_syscall_enter_id(int num, int id) 452 - { 453 - syscalls_metadata[num]->enter_id = id; 454 - } 455 - 456 - void set_syscall_exit_id(int num, int id) 457 - { 458 - syscalls_metadata[num]->exit_id = id; 459 - } 460 - 461 - static int __init arch_init_ftrace_syscalls(void) 462 - { 463 - int i; 464 - struct syscall_metadata *meta; 465 - unsigned long **psys_syscall_table = &sys_call_table; 466 - 467 - syscalls_metadata = kzalloc(sizeof(*syscalls_metadata) * 468 - FTRACE_SYSCALL_MAX, GFP_KERNEL); 469 - if (!syscalls_metadata) { 470 - WARN_ON(1); 471 - return -ENOMEM; 472 - } 473 - 474 - for (i = 0; i < FTRACE_SYSCALL_MAX; i++) { 475 - meta = find_syscall_meta(psys_syscall_table[i]); 476 - syscalls_metadata[i] = meta; 477 - } 478 - 479 - return 0; 480 - } 481 - arch_initcall(arch_init_ftrace_syscalls); 482 410 #endif /* CONFIG_FTRACE_SYSCALLS */