From 2cf2bd81974722114b74e1880425b9921f38a7f9 Mon Sep 17 00:00:00 2001 From: Julius Werner Date: Wed, 14 Dec 2022 03:59:18 -0800 Subject: [PATCH] mem_chip_info: Fix potential overflow The calculation for mem_chip_info_total_density_bytes() may already overflow in the intermediate 32-bit calculations before being assigned to the 64-bit result variable. Fix that. Fixes Coverity issue: CID 1501510 BRANCH=corsola Signed-off-by: Julius Werner Change-Id: I73da014c953381974c6ede2b17586b68675bde2d Reviewed-on: https://review.coreboot.org/c/coreboot/+/70764 Tested-by: build bot (Jenkins) Reviewed-by: Yu-Ping Wu --- src/commonlib/bsd/include/commonlib/bsd/mem_chip_info.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/commonlib/bsd/include/commonlib/bsd/mem_chip_info.h b/src/commonlib/bsd/include/commonlib/bsd/mem_chip_info.h index 4ab0c6f289..bcc15a1f8c 100644 --- a/src/commonlib/bsd/include/commonlib/bsd/mem_chip_info.h +++ b/src/commonlib/bsd/include/commonlib/bsd/mem_chip_info.h @@ -101,7 +101,8 @@ static inline uint64_t mem_chip_info_total_density_bytes(const struct mem_chip_i for (i = 0; i < info->num_entries; i++) { const struct mem_chip_entry *e = &info->entries[i]; - bytes += e->density_mbits * (e->channel_io_width / e->io_width) * (MiB / 8); + bytes += (uint64_t)e->density_mbits * (e->channel_io_width / e->io_width) + * (MiB / 8); } return bytes;