On Tue, 23 Mar 2021 08:39:08 +0100 Peter Zijlstra <pet...@infradead.org> wrote:
> > index 4d8e35575549..d8fc87a17421 100644 > > --- a/kernel/trace/ftrace.c > > +++ b/kernel/trace/ftrace.c > > @@ -125,7 +125,7 @@ static void ftrace_ops_list_func(unsigned long ip, > > unsigned long parent_ip, > > #else > > /* See comment below, where ftrace_ops_list_func is defined */ > > static void ftrace_ops_no_ops(unsigned long ip, unsigned long parent_ip); > > -#define ftrace_ops_list_func ((ftrace_func_t)ftrace_ops_no_ops) > > +#define ftrace_ops_list_func ((ftrace_func_t)(void *)ftrace_ops_no_ops) > > So now we're making perfectly fine code worse, because GCC is stupid? > > Please just kill the warning, like we do with so many other warnings. > It's broken! [ Adding Kees ] Well, from what I understand is that typecasting functions to other types of functions is one of the mistakes that cause security bugs to happen. And there's been a few of them in the kernel. Which is why the compilers have now been flagging them. This particular instance of the typecasting is unique and there's a bit of magic involved. Adding this little work around here is fine. Probably needs a better comment though. -- Steve