From: Jonathan Cameron Date: Fri, 26 Jan 2024 12:01:29 +0000 (+0000) Subject: hw/mem/cxl_type3: Fix potential divide by zero reported by coverity X-Git-Tag: v9.0.0-rc0~63^2~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=48461825af1bdc68cfa25fa0b698c958b65f7368;p=thirdparty%2Fqemu.git hw/mem/cxl_type3: Fix potential divide by zero reported by coverity Fixes Coverity ID 1522368. Currently error_fatal is set if interleave_ways_dec() is going to return 0 but we should handle that zero return explicitly. Reported-by: Stefan Hajnoczi Reviewed-by: Fan Ni Signed-off-by: Jonathan Cameron Message-Id: <20240126120132.24248-10-Jonathan.Cameron@huawei.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index 1b92a065a3e..71fcb446134 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -794,8 +794,13 @@ static bool cxl_type3_dpa(CXLType3Dev *ct3d, hwaddr host_addr, uint64_t *dpa) } if (((uint64_t)host_addr < decoder_base) || (hpa_offset >= decoder_size)) { - dpa_base += decoder_size / - cxl_interleave_ways_dec(iw, &error_fatal); + int decoded_iw = cxl_interleave_ways_dec(iw, &error_fatal); + + if (decoded_iw == 0) { + return false; + } + + dpa_base += decoder_size / decoded_iw; continue; }