[igt-dev] [PATCH i-g-t] lib/intel_reg: fix shift undefined behaviour
Simon Ser
simon.ser at intel.com
Thu Mar 21 10:26:56 UTC 2019
1<<31 (same as 2<<30) is undefined behaviour in C. When compiling with
GCC and UBSan, it gives this error:
../tools/intel_reg_decode.c: In function ‘ivb_debug_port’:
../tools/intel_reg_decode.c:398:3: error: case label does not reduce to an integer constant
case PORT_DBG_DRRS_HW_STATE_HIGH:
^~~~
This happens because 1<<31 isn't representable as a signed int. Instead,
use am unsigned int.
Signed-off-by: Simon Ser <simon.ser at intel.com>
---
lib/intel_reg.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/intel_reg.h b/lib/intel_reg.h
index f85fb742..069440cb 100644
--- a/lib/intel_reg.h
+++ b/lib/intel_reg.h
@@ -3383,7 +3383,7 @@ typedef enum {
#define PORT_DBG 0x42308
#define PORT_DBG_DRRS_HW_STATE_OFF (0<<30)
#define PORT_DBG_DRRS_HW_STATE_LOW (1<<30)
-#define PORT_DBG_DRRS_HW_STATE_HIGH (2<<30)
+#define PORT_DBG_DRRS_HW_STATE_HIGH (2U<<30)
/* RC6 residence counters
*/
--
2.21.0
---------------------------------------------------------------------
Intel Finland Oy
Registered Address: PL 281, 00181 Helsinki
Business Identity Code: 0357606 - 4
Domiciled in Helsinki
This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
More information about the igt-dev
mailing list