On 13. 1. 26. 04:47, Alistair Francis wrote: > CAUTION: This email originated from outside of the organization. Do not click > links or open attachments unless you recognize the sender and know the > content is safe. > > > On Mon, Jan 12, 2026 at 7:05 PM Djordje Todorovic > <[email protected]> wrote: >> Cast CM_SIZE to uint64_t before multiplying by the loop counter >> to avoid potential integer overflow. >> >> Resolves: Coverity CID 1644076 >> >> Signed-off-by: Djordje Todorovic <[email protected]> >> --- >> hw/riscv/cps.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/hw/riscv/cps.c b/hw/riscv/cps.c >> index 86172be5b3..620f54e48a 100644 >> --- a/hw/riscv/cps.c >> +++ b/hw/riscv/cps.c >> @@ -133,7 +133,7 @@ static void riscv_cps_realize(DeviceState *dev, Error >> **errp) >> >> sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->gcr), 0)); >> >> for (i = 0; i < num_of_clusters; i++) { >> - uint64_t cm_base = GLOBAL_CM_BASE + (CM_SIZE * i); >> + uint64_t cm_base = GLOBAL_CM_BASE + ((uint64_t)CM_SIZE * i); > You shouldn't need to cast this, instead this should work > > diff --git a/include/hw/riscv/cps.h b/include/hw/riscv/cps.h > index f33fd7ac86..39029bca8f 100644 > --- a/include/hw/riscv/cps.h > +++ b/include/hw/riscv/cps.h > @@ -27,7 +27,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(RISCVCPSState, RISCV_CPS) > /* The global CM base for the boston-aia model. */ > #define GLOBAL_CM_BASE 0x16100000 > /* The CM block is 512 KiB. */ > -#define CM_SIZE (1 << 19) > +#define CM_SIZE (1ULL << 19) > > /* > * The mhartid bits has cluster at bit 16, core at bit 4, and hart at > > Alistair
Yes. It will work as well. I will send that version of the patch. Thanks, Djordje >> uint32_t hartid_base = i << MHARTID_CLUSTER_SHIFT; >> s->aplic = riscv_aplic_create(cm_base + AIA_PLIC_M_OFFSET, >> AIA_PLIC_M_SIZE, >> -- >> 2.34.1
