Re: drivers/usb/typec/tcpm/tcpm.c:4724:3: error: case label does not reduce to an integer constant

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 4/21/22 15:27, Randy Dunlap wrote:
Hi--

On 4/21/22 13:36, Guenter Roeck wrote:
On 4/21/22 12:03, Naresh Kamboju wrote:
Linux mainline and linux next arm64 builds failed with gcc-7.3.x.

drivers/usb/typec/tcpm/tcpm.c: In function 'run_state_machine':
drivers/usb/typec/tcpm/tcpm.c:4724:3: error: case label does not
reduce to an integer constant
     case BDO_MODE_TESTDATA:
     ^~~~
make[4]: *** [scripts/Makefile.build:288: drivers/usb/typec/tcpm/tcpm.o] Error 1
                                        ^
Reported-by: Linux Kernel Functional Testing <lkft@xxxxxxxxxx>

--

That code is several years old, the define is a constant, and I don't see
a recent change in the code. What am I missing ?

See a recent patch for the same problem in a different area:

commit 1ef8715975de
Author: Borislav Petkov <bp@xxxxxxx>
Date:   Tue Apr 5 17:15:08 2022 +0200

     ALSA: usb-audio: Fix undefined behavior due to shift overflowing the constant

so those constants probably need to be cast to unsigned int.
(I guess)


Turns out other versions of gcc are "affected" as well.

$ cc -Wall -std=c11 -pedantic -pedantic-errors testc.c
testc.c: In function ‘main’:
testc.c:16:2: error: case label is not an integer constant expression [-Wpedantic]
   16 |  case BDO_MODE_TESTDATA:
      |  ^~~~

... but _only_ with "-std=c11 -pedantic -pedantic-errors" or with "-fsanitize=shift".

It wants
	#define BDO_MODE_TESTDATA	(8u << 28)

Pedantic indeed ...

Guenter



[Index of Archives]     [Linux Kernel]     [Linux USB Development]     [Yosemite News]     [Linux SCSI]

  Powered by Linux