drivers: ddr: altera: Fix integer overflow during size calculation
authorNaresh Kumar Ravulapalli <nareshkumar.ravulapalli@altera.com>
Fri, 7 Mar 2025 10:28:51 +0000 (02:28 -0800)
committerTien Fong Chee <tien.fong.chee@intel.com>
Tue, 22 Apr 2025 03:47:38 +0000 (11:47 +0800)
Data structure, dramaddrw, is defined as u32. Compiler performs
32-bit arithmetic and logic operations on this data structure. Fix
is provided to avoid integer overflow while performing shifting
operations greater than 32-bit.

Signed-off-by: Naresh Kumar Ravulapalli <nareshkumar.ravulapalli@altera.com>
Reviewed-by: Tien Fong Chee <tien.fong.chee@altera.com>
drivers/ddr/altera/sdram_soc64.c

index c8c9211..75c6de1 100644 (file)
@@ -249,7 +249,7 @@ phys_size_t sdram_calculate_size(struct altera_sdram_plat *plat)
                         DRAMADDRW_CFG_ROW_ADDR_WIDTH(dramaddrw) +
                         DRAMADDRW_CFG_COL_ADDR_WIDTH(dramaddrw));
 
-       size *= (2 << (hmc_ecc_readl(plat, DDRIOCTRL) &
+       size *= ((phys_size_t)2 << (hmc_ecc_readl(plat, DDRIOCTRL) &
                        DDR_HMC_DDRIOCTRL_IOSIZE_MSK));
 
        return size;