hw/misc/mps2-fpgaio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
To prevent integer overflow it is worth casting 1 to 1ULL.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
Signed-off-by: Tigran Sogomonian <tsogomonian@astralinux.ru>
---
hw/misc/mps2-fpgaio.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/misc/mps2-fpgaio.c b/hw/misc/mps2-fpgaio.c
index d07568248d..297cb1b602 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], value & (1ULL << i));
}
}
break;
--
2.30.2
On 12/26/24 01:58, Tigran Sogomonian wrote:
> To prevent integer overflow it is worth casting 1 to 1ULL.
>
> Found by Linux Verification Center (linuxtesting.org) with SVACE.
>
> Signed-off-by: Tigran Sogomonian <tsogomonian@astralinux.ru>
> ---
> hw/misc/mps2-fpgaio.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/hw/misc/mps2-fpgaio.c b/hw/misc/mps2-fpgaio.c
> index d07568248d..297cb1b602 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], value & (1ULL << i));
> }
> }
> break;
s->num_leds is bounded by MPS2FPGAIO_MAX_LEDS, which is 32.
There is no possible integer overflow here.
Please give more than a cursory look at the code.
r~
On 26/12/24 10:58, Tigran Sogomonian wrote:
> To prevent integer overflow it is worth casting 1 to 1ULL.
>
> Found by Linux Verification Center (linuxtesting.org) with SVACE.
>
> Signed-off-by: Tigran Sogomonian <tsogomonian@astralinux.ru>
> ---
> hw/misc/mps2-fpgaio.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/hw/misc/mps2-fpgaio.c b/hw/misc/mps2-fpgaio.c
> index d07568248d..297cb1b602 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], value & (1ULL << i));
Let's use extract64() and call it a day?
> }
> }
> break;
© 2016 - 2026 Red Hat, Inc.