Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fw_cfg: Don't set callback_opaque NULL in fw_cfg_modify_bytes_read()
On arm/virt platform, Chen Xiang reported a Guest crash while attempting the below steps, 1. Launch the Guest with nvdimm=on 2. Hot-add a NVDIMM dev 3. Reboot 4. Guest boots fine. 5. Reboot again. 6. Guest boot fails. QEMU_EFI reports the below error: ProcessCmdAddPointer: invalid pointer value in "etc/acpi/tables" OnRootBridgesConnected: InstallAcpiTables: Protocol Error Debugging shows that on first reboot(after hot adding NVDIMM), Qemu updates the etc/table-loader len, qemu_ram_resize() fw_cfg_modify_file() fw_cfg_modify_bytes_read() And in fw_cfg_modify_bytes_read() we set the "callback_opaque" for the key entry to NULL. Because of this, on the second reboot, virt_acpi_build_update() is called with a NULL "build_state" and returns without updating the ACPI tables. This seems to be upsetting the firmware. To fix this, don't change the callback_opaque in fw_cfg_modify_bytes_read(). Fixes: bdbb5b1 ("fw_cfg: add fw_cfg_machine_reset function") Reported-by: chenxiang <[email protected]> Acked-by: Igor Mammedov <[email protected]> Acked-by: Gerd Hoffmann <[email protected]> Signed-off-by: Shameer Kolothum <[email protected]> Message-ID: <[email protected]> Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
- Loading branch information