Re: [PATCH][next] ftrace: Fix -Wcast-function-type warnings on powerpc64

From: Steven Rostedt
Date: Tue Oct 05 2021 - 12:51:37 EST


On Tue, 5 Oct 2021 11:50:27 -0500
"Gustavo A. R. Silva" <gustavoars@xxxxxxxxxx> wrote:

> Nop; there are still some warnings (ppc64_defconfig):

Thanks, I'll take a look, and compile it against ppc64_defconfig.

-- Steve

>
> kernel/trace/ftrace.c: In function ‘ftrace_ops_get_list_func’:
> kernel/trace/ftrace.c:171:10: error: returning ‘void (*)(long unsigned int, long unsigned int, struct ftrace_ops *, struct ftrace_regs *)’ from a function with incompatible return type ‘ftrace_func_t’ {aka ‘void (*)(long unsigned int, long unsigned int)’} [-Werror=incompatible-pointer-types]
> 171 | return ftrace_ops_list_func;
> | ^~~~~~~~~~~~~~~~~~~~
> kernel/trace/ftrace.c: In function ‘update_ftrace_function’:
> kernel/trace/ftrace.c:204:8: error: assignment to ‘ftrace_func_t’ {aka ‘void (*)(long unsigned int, long unsigned int)’} from incompatible pointer type ‘void (*)(long unsigned int, long unsigned int, struct ftrace_ops *, struct ftrace_regs *)’ [-Werror=incompatible-pointer-types]
> 204 | func = ftrace_ops_list_func;
> | ^
> kernel/trace/ftrace.c:217:11: warning: comparison of distinct pointer types lacks a cast
> 217 | if (func == ftrace_ops_list_func) {
> | ^~
> kernel/trace/ftrace.c: In function ‘ftrace_modify_all_code’:
> kernel/trace/ftrace.c:2695:35: error: passing argument 1 of ‘ftrace_update_ftrace_func’ from incompatible pointer type [-Werror=incompatible-pointer-types]
> 2695 | err = ftrace_update_ftrace_func(ftrace_ops_list_func);
> | ^~~~~~~~~~~~~~~~~~~~
> | |
> | void (*)(long unsigned int, long unsigned int, struct ftrace_ops *, struct ftrace_regs *)
> In file included from kernel/trace/ftrace.c:29:
> ./include/linux/ftrace.h:585:52: note: expected ‘ftrace_func_t’ {aka ‘void (*)(long unsigned int, long unsigned int)’} but argument is of type ‘void (*)(long unsigned int, long unsigned int, struct ftrace_ops *, struct ftrace_regs *)’
> 585 | extern int ftrace_update_ftrace_func(ftrace_func_t func);
> | ~~~~~~~~~~~~~~^~~~
> kernel/trace/ftrace.c:2705:38: warning: comparison of distinct pointer types lacks a cast
> 2705 | if (update && ftrace_trace_function != ftrace_ops_list_func) {
> | ^~