Re: [PATCH] perf: enum overflow in uapi/linux/perf_event.h
From: Luc Van Oostenryck <hidden>
Date: 2018-09-07 23:56:01
Also in:
lkml
On Fri, Sep 07, 2018 at 08:43:59PM +0200, Luc Van Oostenryck wrote:
On Fri, Sep 07, 2018 at 04:15:33PM +0200, Christophe LEROY wrote:quoted
Le 07/09/2018 à 15:58, Peter Zijlstra a écrit :quoted
On Fri, Sep 07, 2018 at 01:50:18PM +0000, Christophe Leroy wrote:quoted
On 09/07/2018 01:42 PM, Peter Zijlstra wrote:quoted
On Fri, Sep 07, 2018 at 01:27:19PM +0000, Christophe Leroy wrote:quoted
On PPC32, enums are 32 bits, so __PERF_SAMPLE_CALLCHAIN_EARLY is out of scope. The following sparse warning is encountered: CHECK arch/powerpc/kernel/process.c ./include/uapi/linux/perf_event.h:147:56: warning: cast truncates bits from constant value (8000000000000000 becomes 0)Urgh... what compiler is that? I've not seen anything like that from the build bots.[root@pc16082vm linux-powerpc]# sparse --version 0.5.2 [root@pc16082vm linux-powerpc]# ppc-linux-gcc --version ppc-linux-gcc (GCC) 5.4.0Ah, that's a sparse warning. But does your GCC agree? The thing is, sparse uses the C enum spec, but I suspect GCC uses the C++ enum spec and it all works fine.Sparse is a bit weird about the exact underlying type used for enums.quoted
Ah yes, it seems that GCC is happy. So sparse should be fixed instead ?I'll investigate (I suppose the same is given on x86-32).
It's definitively a bug in sparse. A relatively nasty one and which open a can of worms. Fortunately, I had already looked at these problems in May, I just didn't had the time to push the patches. -- Luc