[lvc-project] [PATCH] clocksource/drivers/exynos_mct: Fix an unexpected sign extension

Markov Gleb markov.gi at npc-ksb.ru
Mon Jun 29 15:44:12 MSK 2026


From: Gleb Markov <markov.gi at npc-ksb.ru>

Due to implicit sign extension, shifting a signed iteral 1 before
converting to a wider unsigned type floods the upper bits with ones.
This produced an unexpected value (such as 0xffffffffff80000000), which
breaks subsequent calculations.

Add the UL suffix to explicitly convert to a type with a larger dimension.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: 30d8bead5a30 ("ARM: EXYNOS4: Implement kernel timers using MCT")
Signed-off-by: Gleb Markov <markov.gi at npc-ksb.ru>
---
 drivers/clocksource/exynos_mct.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/clocksource/exynos_mct.c b/drivers/clocksource/exynos_mct.c
index da09f467a6bb..ab607dc99004 100644
--- a/drivers/clocksource/exynos_mct.c
+++ b/drivers/clocksource/exynos_mct.c
@@ -378,7 +378,7 @@ static void exynos4_mct_tick_start(unsigned long cycles,
 
 	exynos4_mct_tick_stop(mevt);
 
-	tmp = (1 << 31) | cycles;	/* MCT_L_UPDATE_ICNTB */
+	tmp = (1UL << 31) | cycles;	/* MCT_L_UPDATE_ICNTB */
 
 	/* update interrupt count buffer */
 	exynos4_mct_write(tmp, mevt->base + MCT_L_ICNTB_OFFSET);
-- 
2.43.0




More information about the lvc-project mailing list