Fix snapshot mem leak
This commit is contained in:
parent
711b8b9b1d
commit
241ec5977a
@ -113,12 +113,15 @@ device_save_state_t* device_save_all(void) {
|
|||||||
return dss;
|
return dss;
|
||||||
}
|
}
|
||||||
|
|
||||||
void device_restore_all(device_save_state_t* device_save_state) {
|
void device_restore_all(device_save_state_t* dss) {
|
||||||
bool must_unlock_iothread = false;
|
bool must_unlock_iothread = false;
|
||||||
|
|
||||||
Error* errp = NULL;
|
Error* errp = NULL;
|
||||||
qio_channel_io_seek(QIO_CHANNEL(device_save_state->save_buffer), 0, SEEK_SET, &errp);
|
qio_channel_io_seek(QIO_CHANNEL(dss->save_buffer), 0, SEEK_SET, &errp);
|
||||||
QEMUFile* f = qemu_file_new_input(QIO_CHANNEL(device_save_state->save_buffer));
|
|
||||||
|
if(!dss->save_file) {
|
||||||
|
dss->save_file = qemu_file_new_input(QIO_CHANNEL(dss->save_buffer));
|
||||||
|
}
|
||||||
|
|
||||||
if (!qemu_mutex_iothread_locked()) {
|
if (!qemu_mutex_iothread_locked()) {
|
||||||
qemu_mutex_lock_iothread();
|
qemu_mutex_lock_iothread();
|
||||||
@ -128,7 +131,7 @@ void device_restore_all(device_save_state_t* device_save_state) {
|
|||||||
int save_libafl_restoring_devices = libafl_restoring_devices;
|
int save_libafl_restoring_devices = libafl_restoring_devices;
|
||||||
libafl_restoring_devices = 1;
|
libafl_restoring_devices = 1;
|
||||||
|
|
||||||
qemu_load_device_state(f);
|
qemu_load_device_state(dss->save_file);
|
||||||
|
|
||||||
libafl_restoring_devices = save_libafl_restoring_devices;
|
libafl_restoring_devices = save_libafl_restoring_devices;
|
||||||
|
|
||||||
@ -144,4 +147,6 @@ void device_free_all(device_save_state_t* dss) {
|
|||||||
Error* errp = NULL;
|
Error* errp = NULL;
|
||||||
qio_channel_close(QIO_CHANNEL(dss->save_buffer), &errp);
|
qio_channel_close(QIO_CHANNEL(dss->save_buffer), &errp);
|
||||||
object_unref(OBJECT(dss->save_buffer));
|
object_unref(OBJECT(dss->save_buffer));
|
||||||
|
if (dss->save_file)
|
||||||
|
qemu_fclose(dss->save_file);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user