aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTigran Sogomonian <tsogomonian@astralinux.ru>2024-12-27 13:46:18 +0300
committerPaolo Bonzini <pbonzini@redhat.com>2025-03-17 08:53:25 +0100
commitd18591157e5adf0e4491eed9b2c99828ba52bd80 (patch)
tree2d2ec1db2006b8786eac3ede934d60acec678129
parentaa90f1161bb17a4863e16ec2f75104cff0752d4e (diff)
downloadqemu-d18591157e5adf0e4491eed9b2c99828ba52bd80.zip
qemu-d18591157e5adf0e4491eed9b2c99828ba52bd80.tar.gz
qemu-d18591157e5adf0e4491eed9b2c99828ba52bd80.tar.bz2
hw/misc: use extract64 instead of 1 << i
1 << i is casted to uint64_t while bitwise and with val. So this value may become 0xffffffff80000000 but only 31th "start" bit is required. Use the bitfield extract() API instead. Found by Linux Verification Center (linuxtesting.org) with SVACE. Signed-off-by: Tigran Sogomonian <tsogomonian@astralinux.ru> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Link: https://lore.kernel.org/r/20241227104618.2526-1-tsogomonian@astralinux.ru Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--hw/misc/mps2-fpgaio.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/hw/misc/mps2-fpgaio.c b/hw/misc/mps2-fpgaio.c
index d075682..04a3da5 100644
--- a/hw/misc/mps2-fpgaio.c
+++ b/hw/misc/mps2-fpgaio.c
@@ -198,7 +198,7 @@ static void mps2_fpgaio_write(void *opaque, hwaddr offset, uint64_t value,
s->led0 = value & MAKE_64BIT_MASK(0, s->num_leds);
for (i = 0; i < s->num_leds; i++) {
- led_set_state(s->led[i], value & (1 << i));
+ led_set_state(s->led[i], extract64(value, i, 1));
}
}
break;