According to the C11 standard (ISO/IEC 9899:2011, 6.5.7): "If E1 has a signed type and E1 x 2^E2 is not representable in the result type, the behavior is undefined."
Shifting 1 << 31 causes signed integer overflow, which leads to undefined behavior. Fix this by explicitly using 'BIT(31)' to ensure the shift operates on an unsigned type, avoiding undefined behavior. Signed-off-by: Yu-Chun Lin <eleanor...@gmail.com> --- Compile test only drivers/gpu/drm/tegra/dc.c | 2 +- drivers/gpu/drm/tegra/hdmi.c | 8 ++++---- drivers/gpu/drm/tegra/hdmi.h | 8 ++++---- drivers/gpu/drm/tegra/riscv.c | 2 +- drivers/gpu/drm/tegra/sor.h | 14 +++++++------- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c index 430b2eededb2..3047a380bb83 100644 --- a/drivers/gpu/drm/tegra/dc.c +++ b/drivers/gpu/drm/tegra/dc.c @@ -2171,7 +2171,7 @@ static void tegra_crtc_atomic_enable(struct drm_crtc *crtc, u32 syncpt = host1x_syncpt_id(dc->syncpt), enable; if (dc->soc->has_nvdisplay) - enable = 1 << 31; + enable = BIT(31); else enable = 1 << 8; diff --git a/drivers/gpu/drm/tegra/hdmi.c b/drivers/gpu/drm/tegra/hdmi.c index e705f8590c13..524b46a297be 100644 --- a/drivers/gpu/drm/tegra/hdmi.c +++ b/drivers/gpu/drm/tegra/hdmi.c @@ -1719,7 +1719,7 @@ static const struct tegra_hdmi_config tegra20_hdmi_config = { .tmds = tegra20_tmds_config, .num_tmds = ARRAY_SIZE(tegra20_tmds_config), .fuse_override_offset = HDMI_NV_PDISP_SOR_LANE_DRIVE_CURRENT, - .fuse_override_value = 1 << 31, + .fuse_override_value = BIT(31), .has_sor_io_peak_current = false, .has_hda = false, .has_hbr = false, @@ -1729,7 +1729,7 @@ static const struct tegra_hdmi_config tegra30_hdmi_config = { .tmds = tegra30_tmds_config, .num_tmds = ARRAY_SIZE(tegra30_tmds_config), .fuse_override_offset = HDMI_NV_PDISP_SOR_LANE_DRIVE_CURRENT, - .fuse_override_value = 1 << 31, + .fuse_override_value = BIT(31), .has_sor_io_peak_current = false, .has_hda = true, .has_hbr = false, @@ -1739,7 +1739,7 @@ static const struct tegra_hdmi_config tegra114_hdmi_config = { .tmds = tegra114_tmds_config, .num_tmds = ARRAY_SIZE(tegra114_tmds_config), .fuse_override_offset = HDMI_NV_PDISP_SOR_PAD_CTLS0, - .fuse_override_value = 1 << 31, + .fuse_override_value = BIT(31), .has_sor_io_peak_current = true, .has_hda = true, .has_hbr = true, @@ -1749,7 +1749,7 @@ static const struct tegra_hdmi_config tegra124_hdmi_config = { .tmds = tegra124_tmds_config, .num_tmds = ARRAY_SIZE(tegra124_tmds_config), .fuse_override_offset = HDMI_NV_PDISP_SOR_PAD_CTLS0, - .fuse_override_value = 1 << 31, + .fuse_override_value = BIT(31), .has_sor_io_peak_current = true, .has_hda = true, .has_hbr = true, diff --git a/drivers/gpu/drm/tegra/hdmi.h b/drivers/gpu/drm/tegra/hdmi.h index 8deb04223c18..57727703779b 100644 --- a/drivers/gpu/drm/tegra/hdmi.h +++ b/drivers/gpu/drm/tegra/hdmi.h @@ -119,7 +119,7 @@ #define ACR_SUBPACK_CTS(x) (((x) & 0xffffff) << 8) #define ACR_SUBPACK_N(x) (((x) & 0xffffff) << 0) -#define ACR_ENABLE (1 << 31) +#define ACR_ENABLE BIT(31) #define HDMI_NV_PDISP_HDMI_CTRL 0x44 #define HDMI_CTRL_REKEY(x) (((x) & 0x7f) << 0) @@ -130,7 +130,7 @@ #define HDMI_NV_PDISP_HDMI_VSYNC_WINDOW 0x46 #define VSYNC_WINDOW_END(x) (((x) & 0x3ff) << 0) #define VSYNC_WINDOW_START(x) (((x) & 0x3ff) << 16) -#define VSYNC_WINDOW_ENABLE (1 << 31) +#define VSYNC_WINDOW_ENABLE BIT(31) #define HDMI_NV_PDISP_HDMI_GCP_CTRL 0x47 #define HDMI_NV_PDISP_HDMI_GCP_STATUS 0x48 @@ -158,8 +158,8 @@ #define SOR_PWR_SAFE_STATE_PD (0 << 16) #define SOR_PWR_SAFE_STATE_PU (1 << 16) #define SOR_PWR_SETTING_NEW_DONE (0 << 31) -#define SOR_PWR_SETTING_NEW_PENDING (1 << 31) -#define SOR_PWR_SETTING_NEW_TRIGGER (1 << 31) +#define SOR_PWR_SETTING_NEW_PENDING BIT(31) +#define SOR_PWR_SETTING_NEW_TRIGGER BIT(31) #define HDMI_NV_PDISP_SOR_TEST 0x56 #define HDMI_NV_PDISP_SOR_PLL0 0x57 diff --git a/drivers/gpu/drm/tegra/riscv.c b/drivers/gpu/drm/tegra/riscv.c index 6580416408f8..a5941239b194 100644 --- a/drivers/gpu/drm/tegra/riscv.c +++ b/drivers/gpu/drm/tegra/riscv.c @@ -19,7 +19,7 @@ #define RISCV_BCR_CTRL_CORE_SELECT_RISCV (1 << 4) #define RISCV_BCR_DMACFG 0x466c #define RISCV_BCR_DMACFG_TARGET_LOCAL_FB (0 << 0) -#define RISCV_BCR_DMACFG_LOCK_LOCKED (1 << 31) +#define RISCV_BCR_DMACFG_LOCK_LOCKED BIT(31) #define RISCV_BCR_DMAADDR_PKCPARAM_LO 0x4670 #define RISCV_BCR_DMAADDR_PKCPARAM_HI 0x4674 #define RISCV_BCR_DMAADDR_FMCCODE_LO 0x4678 diff --git a/drivers/gpu/drm/tegra/sor.h b/drivers/gpu/drm/tegra/sor.h index 00e09d5dca30..4f404f22dd04 100644 --- a/drivers/gpu/drm/tegra/sor.h +++ b/drivers/gpu/drm/tegra/sor.h @@ -74,7 +74,7 @@ #define SOR_CAP 0x14 #define SOR_PWR 0x15 -#define SOR_PWR_TRIGGER (1 << 31) +#define SOR_PWR_TRIGGER BIT(31) #define SOR_PWR_MODE_SAFE (1 << 28) #define SOR_PWR_NORMAL_STATE_PU (1 << 0) @@ -154,7 +154,7 @@ #define SOR_SEQ_CTL_PU_PC(x) (((x) & 0xf) << 0) #define SOR_LANE_SEQ_CTL 0x21 -#define SOR_LANE_SEQ_CTL_TRIGGER (1 << 31) +#define SOR_LANE_SEQ_CTL_TRIGGER BIT(31) #define SOR_LANE_SEQ_CTL_STATE_BUSY (1 << 28) #define SOR_LANE_SEQ_CTL_SEQUENCE_UP (0 << 20) #define SOR_LANE_SEQ_CTL_SEQUENCE_DOWN (1 << 20) @@ -163,7 +163,7 @@ #define SOR_LANE_SEQ_CTL_DELAY(x) (((x) & 0xf) << 12) #define SOR_SEQ_INST(x) (0x22 + (x)) -#define SOR_SEQ_INST_PLL_PULLDOWN (1 << 31) +#define SOR_SEQ_INST_PLL_PULLDOWN BIT(31) #define SOR_SEQ_INST_POWERDOWN_MACRO (1 << 30) #define SOR_SEQ_INST_ASSERT_PLL_RESET (1 << 29) #define SOR_SEQ_INST_BLANK_V (1 << 28) @@ -192,7 +192,7 @@ #define SOR_PWM_DIV_MASK 0xffffff #define SOR_PWM_CTL 0x33 -#define SOR_PWM_CTL_TRIGGER (1 << 31) +#define SOR_PWM_CTL_TRIGGER BIT(31) #define SOR_PWM_CTL_CLK_SEL (1 << 30) #define SOR_PWM_CTL_DUTY_CYCLE_MASK 0xffffff @@ -261,7 +261,7 @@ #define SOR_LANE_POSTCURSOR_LANE0(x) (((x) & 0xff) << 0) #define SOR_DP_CONFIG0 0x58 -#define SOR_DP_CONFIG_DISPARITY_NEGATIVE (1 << 31) +#define SOR_DP_CONFIG_DISPARITY_NEGATIVE BIT(31) #define SOR_DP_CONFIG_ACTIVE_SYM_ENABLE (1 << 26) #define SOR_DP_CONFIG_ACTIVE_SYM_POLARITY (1 << 24) #define SOR_DP_CONFIG_ACTIVE_SYM_FRAC_MASK (0xf << 16) @@ -370,7 +370,7 @@ #define SOR_HDMI_ACR_SUBPACK_LOW_SB1(x) (((x) & 0xff) << 24) #define SOR_HDMI_ACR_0320_SUBPACK_HIGH 0xb3 -#define SOR_HDMI_ACR_SUBPACK_HIGH_ENABLE (1 << 31) +#define SOR_HDMI_ACR_SUBPACK_HIGH_ENABLE BIT(31) #define SOR_HDMI_ACR_0441_SUBPACK_LOW 0xb4 #define SOR_HDMI_ACR_0441_SUBPACK_HIGH 0xb5 @@ -382,7 +382,7 @@ #define SOR_HDMI_CTRL_REKEY(x) (((x) & 0x7f) << 0) #define SOR_HDMI_SPARE 0xcb -#define SOR_HDMI_SPARE_ACR_PRIORITY_HIGH (1 << 31) +#define SOR_HDMI_SPARE_ACR_PRIORITY_HIGH BIT(31) #define SOR_HDMI_SPARE_CTS_RESET(x) (((x) & 0x7) << 16) #define SOR_HDMI_SPARE_HW_CTS_ENABLE (1 << 0) -- 2.43.0