On Mon, Mar 22, 2021 at 10:18:17PM +0100, Arnd Bergmann wrote: > > Steve is correct. Also, why is that warning correct? On x86 we return in > > RAX, and using int will simply not inspect the upper 32 bits there. > > 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.
Then please kill the warning, it's bullshit. > > And I'm fairly sure I had a pointer user somewhere recently. > > I've only tested my series with 5.12-rc so far, but don't get any other > such warnings. Maybe it's in linux-next? No, it's in Linus' tree, see commit: c8e2fe13d1d1 ("x86/perf: Use RET0 as default for guest_get_msrs to handle "no PMU" case")