Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

usb: typec: tcpm: Fix undefined behavior due to shift overflowing the constant

Fix:

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:
^~~~

See https://lore.kernel.org/r/YkwQ6%2BtIH8GQpuct@zn.tnic for the gory
details as to why it triggers with older gccs only.

Signed-off-by: Borislav Petkov <bp@suse.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-usb@vger.kernel.org
Link: https://lore.kernel.org/r/20220405151517.29753-8-bp@alien8.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Borislav Petkov and committed by
Greg Kroah-Hartman
8d084b2e 9e3d68f8

+1 -1
+1 -1
include/linux/usb/pd_bdo.h
··· 15 15 #define BDO_MODE_CARRIER2 (5 << 28) 16 16 #define BDO_MODE_CARRIER3 (6 << 28) 17 17 #define BDO_MODE_EYE (7 << 28) 18 - #define BDO_MODE_TESTDATA (8 << 28) 18 + #define BDO_MODE_TESTDATA (8U << 28) 19 19 20 20 #define BDO_MODE_MASK(mode) ((mode) & 0xf0000000) 21 21