On 01.08.2025 09:01, Thomas Huth wrote:
From: Thomas Huth <th...@redhat.com>

When booting the Linux kernel from tests/functional/test_loongarch64_virt.py
with a QEMU that has been compiled with --enable-ubsan, there is
a warning like this:

  .../hw/intc/loongarch_pch_pic.c:171:46: runtime error: index 512 out of
   bounds for type 'uint8_t[64]' (aka 'unsigned char[64]')
  SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior
   .../hw/intc/loongarch_pch_pic.c:171:46
  .../hw/intc/loongarch_pch_pic.c:175:45: runtime error: index 256 out of
   bounds for type 'uint8_t[64]' (aka 'unsigned char[64]')
  SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior
   .../hw/intc/loongarch_pch_pic.c:175:45

It happens because "addr" is added first before substracting the base
(PCH_PIC_HTMSI_VEC or PCH_PIC_ROUTE_ENTRY).
Additionally, this code looks like it is not endianness safe, since
it uses a 64-bit pointer to write values into an array of 8-bit values.

Thus rework the code to use the stq_le_p / ldq_le_p helpers here
and make sure that we do not create pointers with undefined behavior
by accident.

Signed-off-by: Thomas Huth <th...@redhat.com>

Queued to trivial-patches, thank you!

/mjt

Reply via email to