Messages in this thread | | | Subject | Re: [PATCH] static_call: fix function type mismatch | From | Rasmus Villemoes <> | Date | Wed, 24 Mar 2021 13:46:06 +0100 |
| |
On 23/03/2021 08.47, Peter Zijlstra wrote: > On Mon, Mar 22, 2021 at 05:29:21PM -0400, Steven Rostedt wrote: >> On Mon, 22 Mar 2021 22:18:17 +0100 >> Arnd Bergmann <arnd@kernel.org> wrote: >> >>> I think the code works correctly on all architectures we support because >>> both 'int' and 'long' are returned in a register with any unused bits cleared. >>> It is however undefined behavior in C because 'int' and 'long' are not >>> compatible types, and the calling conventions don't have to allow this. >> >> Static calls (and so do tracepoints) currently rely on these kind of >> "undefined behavior" in C. This isn't the only UB that it relies on. > > Right, most of the kernel lives in UB. That's what we have -fwrapv > -fno-strict-aliassing and lots of other bits for, to 'fix' the stupid C > standard. > > This is one more of them, so just ignore the warning and make it go > away: > > -Wno-cast-function-type > > seems to be the magic knob. >
That can be done for now, but I think something has to be done if CFI is to become a thing.
Sami, what happens if you try to boot a CONFIG_CFI_CLANG+CONFIG_PREEMPT_DYNAMIC kernel?
Rasmus
| |