On 10/2/2026 7:27 AM, Alistair Francis wrote:
On Thu, 2026-10-01 at 10:22 +0800, Tao Ding wrote:
Use hwaddr for address calculations to avoid 32-bit overflow and
address truncation.
Resolves: Coverity CID 1685515, 1685517
Reported-by: Alistair Francis<[email protected]>
Signed-off-by: Tao Ding<[email protected]>
---
hw/misc/k230_decomp_gzip.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/hw/misc/k230_decomp_gzip.c b/hw/misc/k230_decomp_gzip.c
index 0d8a3b2d2e..54303c0e7f 100644
--- a/hw/misc/k230_decomp_gzip.c
+++ b/hw/misc/k230_decomp_gzip.c
@@ -53,13 +53,13 @@ static bool
k230_decomp_gzip_write_mem(K230DecompGzipState *s, hwaddr addr,
static hwaddr k230_decomp_gzip_output_addr(K230DecompGzipState *s)
{
return K230_DECOMP_GZIP_SRAM_OUT_BASE +
- s->output.slot * K230_DECOMP_GZIP_BLOCK_SIZE +
+ (hwaddr) s->output.slot * K230_DECOMP_GZIP_BLOCK_SIZE +
Isn't K230_DECOMP_GZIP_BLOCK_SIZE still a 32-bit value, should it be a
ULL?
The cast of |s->output.slot|to |hwaddr|causes the multiplication to be
performed as |hwaddr|, so |K230_DECOMP_GZIP_BLOCK_SIZE|does not need a |ULL|suffix.
s->output.current_offset;
}
static hwaddr k230_decomp_gzip_input_addr(K230DecompGzipState *s)
{
- return s->input.slot * K230_DECOMP_GZIP_BLOCK_SIZE +
+ return (hwaddr) s->input.slot * K230_DECOMP_GZIP_BLOCK_SIZE +
K230_DECOMP_GZIP_SRAM_IN_BASE;
}
@@ -102,7 +102,7 @@ static void
k230_decomp_gzip_finish(K230DecompGzipState *s, bool crc_ok)
}
static bool k230_decomp_gzip_load_input(K230DecompGzipState *s,
- uint32_t addr, uint32_t
size)
+ hwaddr addr, uint32_t size)
This should probably be it's own patch
|Agreed. I'll split the k230_decomp_gzip_load_input() parameter type
change into a separate patch in v2.|
Alistair
{
s->input.current_offset = 0;