pci/shpc: fix signed integer overflow
PATCH 1/1 pci/shpc: fix signed integer overflow
clang undefined behaviour sanitizer reports:
Quoted 2 lines
hw/pci/shpc.c:162:27: runtime error: left shift of 1 by 31 places cannot be represented in type 'int'
Caused by the usual lack of a 'U' qualifier on a constant 1 being shifted left. Fix it up.
Reported-by Peter Maydell <[email protected]>
Signed-off-by Michael S. Tsirkin <[email protected]>
--- hw/pci/shpc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
hw/pci/shpc.c +1 -1
@@ -159,7 +159,7 @@ static void shpc_interrupt_update(PCIDevice *d)for (slot =0 ; slot < shpc->nslots; ++slot) {uint8_t event = shpc->config[SHPC_SLOT_EVENT_LATCH (slot)];uint8_t disable = shpc->config[SHPC_SLOT_EVENT_SERR_INT_DIS (d, slot)]; -uint32_t mask =1 <<SHPC_IDX_TO_LOGICAL (slot); +uint32_t mask =1U <<SHPC_IDX_TO_LOGICAL (slot);if (event & ~disable) { int_locator |= mask; }
Signature · 1 line
MST