]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
hw/mips/malta: Silence warning from ubsan
authorThomas Huth <thuth@redhat.com>
Mon, 28 Jul 2025 11:51:51 +0000 (13:51 +0200)
committerThomas Huth <thuth@redhat.com>
Tue, 9 Sep 2025 07:34:45 +0000 (09:34 +0200)
When compiling QEMU with --enable-ubsan there is a undefined behavior
warning when using the malta machine:

 hw/mips/malta.c:1200:32: runtime error: addition of unsigned offset
  to 0x7fb620600000 overflowed to 0x7fb6205fffff
 SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior hw/mips/malta.c:1200:32

To fix the issue, check the bios_size whether we really loaded the
firmware before trying to byte-swap the instructions here.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20250728115152.187728-1-thuth@redhat.com>

hw/mips/malta.c

index 344dc8ca76675e16ebbeba42604e829b6140a19a..02da629b5afca92f174c6f2491643bc293326339 100644 (file)
@@ -1191,7 +1191,7 @@ void mips_malta_init(MachineState *machine)
          * In little endian mode the 32bit words in the bios are swapped,
          * a neat trick which allows bi-endian firmware.
          */
-        if (!TARGET_BIG_ENDIAN) {
+        if (!TARGET_BIG_ENDIAN && bios_size > 0) {
             uint32_t *end, *addr;
             const size_t swapsize = MIN(bios_size, 0x3e0000);
             addr = rom_ptr(FLASH_ADDRESS, swapsize);