Browse Source

hw/char/{diva-gsp, serial-pci-multi}: Fix deinitialization order

The memory region is owned by the device being unrealized, so must be
removed from the mapping before unrealizing.

Fixes: d66bbea4e0 ("serial: add 2x + 4x pci variant")
Fixes: 2740747084 ("hw/char: Add emulation of Diva GSP PCI management boards")
Reported-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Message-ID: <20260305220911.131508-3-shentey@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
master
Bernhard Beschow 4 weeks ago
committed by Philippe Mathieu-Daudé
parent
commit
7e68ad18f5
  1. 2
      hw/char/diva-gsp.c
  2. 2
      hw/char/serial-pci-multi.c

2
hw/char/diva-gsp.c

@ -62,8 +62,8 @@ static void diva_pci_exit(PCIDevice *dev)
for (i = 0; i < pci->ports; i++) {
s = pci->state + i;
qdev_unrealize(DEVICE(s));
memory_region_del_subregion(&pci->membar, &s->io);
qdev_unrealize(DEVICE(s));
g_free(pci->name[i]);
}
qemu_free_irqs(pci->irqs, pci->ports);

2
hw/char/serial-pci-multi.c

@ -56,8 +56,8 @@ static void multi_serial_pci_exit(PCIDevice *dev)
for (i = 0; i < pci->ports; i++) {
s = pci->state + i;
qdev_unrealize(DEVICE(s));
memory_region_del_subregion(&pci->iobar, &s->io);
qdev_unrealize(DEVICE(s));
g_free(pci->name[i]);
}
}

Loading…
Cancel
Save