lkml.org 
[lkml]   [2026]   [May]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Date
Subject[PATCH] spi: spacemit: add u64 cast to NSEC_PER_SEC to avoid 32-bit overflow
NSEC_PER_SEC expands to the long constant 1000000000L, so NSEC_PER_SEC *
BITS_PER_BYTE (8 * 10^9) overflows on 32-bit-long architectures
before the result reaches the u64 nsec_per_word.

Promote the multiplication to u64 by casting the first operand, which is
NSEC_PER_SEC.

Fixes: efcd8b9d1111 ("spi: spacemit: introduce SpacemiT K1 SPI controller driver")
Suggested-by: Alex Elder <elder@riscstar.com>
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202605050437.RS6mmV2b-lkp@intel.com/
Closes: https://lore.kernel.org/oe-kbuild-all/202605050317.Tf9j487w-lkp@intel.com/
Signed-off-by: Guodong Xu <guodong@riscstar.com>
---
Hi, Mark

This is an incremental fix on top of your for-7.2, addressing the
overflow warning.

Verified on BPI-F3 with a GD25Q64E SPI NOR, read/write/erase still work.

Thank you.
Guodong
---
drivers/spi/spi-spacemit-k1.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/spi/spi-spacemit-k1.c b/drivers/spi/spi-spacemit-k1.c
index 99db429db0b26..215fe66d27b4d 100644
--- a/drivers/spi/spi-spacemit-k1.c
+++ b/drivers/spi/spi-spacemit-k1.c
@@ -390,7 +390,7 @@ static int k1_spi_set_speed(struct k1_spi_driver_data *drv_data,
* ticks_per_word = BITS_PER_BYTE * drv_data->bytes;
* We do the divide last for better accuracy.
*/
- nsec_per_word = NSEC_PER_SEC * BITS_PER_BYTE * drv_data->bytes;
+ nsec_per_word = (u64)NSEC_PER_SEC * BITS_PER_BYTE * drv_data->bytes;
nsec_per_word = DIV_ROUND_UP_ULL(nsec_per_word, drv_data->rate);

/*
---
base-commit: efcd8b9d111177d48c841d09beca43b15d5b9e5f
change-id: 20260505-spi-spacemit-k1-fix-overflow-8799dbc2ae97
Best regards,
--
Guodong Xu <guodong@riscstar.com>


\
 
 \ /
  Last update: 2026-05-05 03:54    [W:0.072 / U:8.620 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and my Meterkast|Read the blog