Commit
8c771eb6294afc5b3754a9e3de51568d4e5986c2 breaks guest PCI hotplug:
Before pt_config_delete() ->
qemu_free_timer(ptdev->pm_state->pm_timer), we should invoke
qemu_del_timer(), otherwise, qemu_run_timers() would access a
qemu_free_timer()-ed timer. The below patch fixes the issue.
Signed-off-by: Dexuan Cui <dexuan.cui@intel.com>
pm_state->flags &= ~PT_FLAG_TRANSITING;
qemu_free_timer(pm_state->pm_timer);
+ pm_state->pm_timer = NULL;
}
void pt_default_power_transition(void *opaque)
pm_state->flags &= ~PT_FLAG_TRANSITING;
qemu_free_timer(pm_state->pm_timer);
+ pm_state->pm_timer = NULL;
}
/* initialize emulate register */
if (ptdev->pm_state)
{
if (ptdev->pm_state->pm_timer)
+ {
+ qemu_del_timer(ptdev->pm_state->pm_timer);
qemu_free_timer(ptdev->pm_state->pm_timer);
+ ptdev->pm_state->pm_timer = NULL;
+ }
free(ptdev->pm_state);
}