• M
    savevm: Survive hot-unplug of snapshot device · f9092b10
    Markus Armbruster 提交于
    savevm.c keeps a pointer to the snapshot block device.  If you manage
    to get that device deleted, the pointer dangles, and the next snapshot
    operation will crash & burn.  Unplugging a guest device that uses it
    does the trick:
    
        $ MALLOC_PERTURB_=234 qemu-system-x86_64 [...]
        QEMU 0.12.50 monitor - type 'help' for more information
        (qemu) info snapshots
        No available block device supports snapshots
        (qemu) drive_add auto if=none,file=tmp.qcow2
        OK
        (qemu) device_add usb-storage,id=foo,drive=none1
        (qemu) info snapshots
        Snapshot devices: none1
        Snapshot list (from none1):
        ID        TAG                 VM SIZE                DATE       VM CLOCK
        (qemu) device_del foo
        (qemu) info snapshots
        Snapshot devices:
        Segmentation fault (core dumped)
    
    Move management of that pointer to block.c, and zap it when the device
    it points becomes unusable.
    Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
    Signed-off-by: NKevin Wolf <kwolf@redhat.com>
    f9092b10
block.h 10.5 KB