mirror of https://gitee.com/openkylin/qemu.git
spapr_pci: Fix memory leak of vmstate_spapr_pci
When VM migrate VMState of spapr_pci, the field(msi_devs) of spapr_pci having a flag of VMS_ALLOC need to allocate memory. If the src doesn't free memory of msi_devs in SaveStateEntry of spapr_pci after QEMUFile save VMState of spapr_pci, it may result in memory leak of msi_devs. We add the post_save func to free memory, which prevents memory leak. Reported-by: Euler Robot <euler.robot@huawei.com> Signed-off-by: Jinhao Gao <gaojinhao@huawei.com> Acked-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Message-Id: <20201231061020.828-2-gaojinhao@huawei.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
This commit is contained in:
parent
2766043345
commit
e6ddad1fd5
|
@ -2173,6 +2173,16 @@ static int spapr_pci_pre_save(void *opaque)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int spapr_pci_post_save(void *opaque)
|
||||
{
|
||||
SpaprPhbState *sphb = opaque;
|
||||
|
||||
g_free(sphb->msi_devs);
|
||||
sphb->msi_devs = NULL;
|
||||
sphb->msi_devs_num = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int spapr_pci_post_load(void *opaque, int version_id)
|
||||
{
|
||||
SpaprPhbState *sphb = opaque;
|
||||
|
@ -2205,6 +2215,7 @@ static const VMStateDescription vmstate_spapr_pci = {
|
|||
.version_id = 2,
|
||||
.minimum_version_id = 2,
|
||||
.pre_save = spapr_pci_pre_save,
|
||||
.post_save = spapr_pci_post_save,
|
||||
.post_load = spapr_pci_post_load,
|
||||
.fields = (VMStateField[]) {
|
||||
VMSTATE_UINT64_EQUAL(buid, SpaprPhbState, NULL),
|
||||
|
|
Loading…
Reference in New Issue