Re: [PATCH] static_call: fix function type mismatch

From: Steven Rostedt
Date: Mon Mar 22 2021 - 17:30:25 EST


On Mon, 22 Mar 2021 22:18:17 +0100
Arnd Bergmann <arnd@xxxxxxxxxx> 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.

<shameless plug>
Perhaps this might make a good topic to talk about at the tool chain
microconference at Plumbers!
</shameless plug>

-- Steve