qemu-arm
[Top][All Lists]
Advanced

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

Re: [PATCH] hw/char/exynos4210_uart: Fix crash on trying to load VM stat


From: Guenter Roeck
Subject: Re: [PATCH] hw/char/exynos4210_uart: Fix crash on trying to load VM state
Date: Thu, 20 Jan 2022 09:18:16 -0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0

On 1/20/22 7:16 AM, Peter Maydell wrote:
The exynos4210_uart_post_load() function assumes that it is passed
the Exynos4210UartState, but it has been attached to the
VMStateDescription for the Exynos4210UartFIFO type.  The result is a
SIGSEGV when attempting to load VM state for any machine type
including this device.

Fix the bug by attaching the post-load function to the VMSD for the
Exynos4210UartState.  This is the logical place for it, because the
actions it does relate to the entire UART state, not just the FIFO.

Thanks to the bug reporter @TrungNguyen1909 for the clear bug
description and the suggested fix.

Fixes: c9d3396d80fe7ece9b
    ("hw/char/exynos4210_uart: Implement post_load function")
Buglink: https://gitlab.com/qemu-project/qemu/-/issues/638
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

Reviewed-by: Guenter Roeck <linux@roeck-us.net>

---
  hw/char/exynos4210_uart.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c
index 80d401a3795..addcd59b028 100644
--- a/hw/char/exynos4210_uart.c
+++ b/hw/char/exynos4210_uart.c
@@ -628,7 +628,6 @@ static const VMStateDescription 
vmstate_exynos4210_uart_fifo = {
      .name = "exynos4210.uart.fifo",
      .version_id = 1,
      .minimum_version_id = 1,
-    .post_load = exynos4210_uart_post_load,
      .fields = (VMStateField[]) {
          VMSTATE_UINT32(sp, Exynos4210UartFIFO),
          VMSTATE_UINT32(rp, Exynos4210UartFIFO),
@@ -641,6 +640,7 @@ static const VMStateDescription vmstate_exynos4210_uart = {
      .name = "exynos4210.uart",
      .version_id = 1,
      .minimum_version_id = 1,
+    .post_load = exynos4210_uart_post_load,
      .fields = (VMStateField[]) {
          VMSTATE_STRUCT(rx, Exynos4210UartState, 1,
                         vmstate_exynos4210_uart_fifo, Exynos4210UartFIFO),





reply via email to

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