qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] accel/tcg: Fix undefined shift in store_whole_le16


From: Richard Henderson
Subject: [PATCH] accel/tcg: Fix undefined shift in store_whole_le16
Date: Tue, 6 Jun 2023 10:16:29 -0700

The computation is documented as unused in this case,
but triggers an ubsan error:

../accel/tcg/ldst_atomicity.c.inc:837:33: runtime error: shift exponent -32 is 
negative
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior 
../accel/tcg/ldst_atomicity.c.inc:837:33 in

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---

Hi Peter.  Found this while merge testing FEAT_LSE.
Clearly my bug, which I ought to have found earlier.


r~

---
 accel/tcg/ldst_atomicity.c.inc | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/accel/tcg/ldst_atomicity.c.inc b/accel/tcg/ldst_atomicity.c.inc
index 2514899408..de70531a7a 100644
--- a/accel/tcg/ldst_atomicity.c.inc
+++ b/accel/tcg/ldst_atomicity.c.inc
@@ -833,7 +833,9 @@ static uint64_t store_whole_le16(void *pv, int size, Int128 
val_le)
     }
     store_atom_insert_al16(pv - o, v, m);
 
-    /* Unused if sz <= 64. */
+    if (sz <= 64) {
+        return 0;
+    }
     return int128_gethi(val_le) >> (sz - 64);
 }
 
-- 
2.34.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]