On Sat, Dec 26, 2020 at 06:33:42PM +0800, g00517791 wrote: > From: Jinhao Gao <gaojin...@huawei.com> > > When VM migrate VMState of spapr_event_log_entry, the field(extended_log) > of spapr_event_log_entry having a flag of VMS_ALLOC needs to allocate > memory. If the dst doesn't free memory which has been allocated for > SaveStateEntry of spapr_event_log_entry before dst loads device state, > it may result that the pointer of extended_log is overlaid when vm loads. > We add the pre_load func to free memory, which prevents memory leak. > > Signed-off-by: Jinhao Gao <gaojin...@huawei.com>
Acked-by: David Gibson <da...@gibson.dropbear.id.au> > --- > hw/ppc/spapr.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index 489cefcb81..ddfed1e7ca 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -1799,10 +1799,22 @@ static bool spapr_pending_events_needed(void *opaque) > return !QTAILQ_EMPTY(&spapr->pending_events); > } > > +static int spapr_event_log_entry_pre_load(void *opaque) > +{ > + SpaprEventLogEntry *entry = opaque; > + > + g_free(entry->extended_log); > + entry->extended_log = NULL; > + entry->extended_length = 0; > + > + return 0; > +} > + > static const VMStateDescription vmstate_spapr_event_entry = { > .name = "spapr_event_log_entry", > .version_id = 1, > .minimum_version_id = 1, > + .pre_load = spapr_event_log_entry_pre_load, > .fields = (VMStateField[]) { > VMSTATE_UINT32(summary, SpaprEventLogEntry), > VMSTATE_UINT32(extended_length, SpaprEventLogEntry), -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature