]> www.infradead.org Git - users/dwmw2/qemu.git/commit
hw/xen: don't clear map_track[] in xen_gnttab_reset()
authorDavid Woodhouse <dwmw@amazon.co.uk>
Wed, 18 Oct 2023 12:31:20 +0000 (13:31 +0100)
committerDavid Woodhouse <dwmw@amazon.co.uk>
Wed, 25 Oct 2023 11:45:22 +0000 (12:45 +0100)
commitb1d6e7bb935576a1bd6e6a46467b674c384f4932
tree55c11eca9366a1b505b2bca8ab1eb246c9c6f897
parent19357da98e196c7135e9a8e3bee5d6aec52fe77c
hw/xen: don't clear map_track[] in xen_gnttab_reset()

The refcounts actually correspond to 'active_ref' structures stored in a
GHashTable per "user" on the backend side (mostly, per XenDevice).

If we zero map_track[] on reset, then when the backend drivers get torn
down and release their mapping we hit the assert(s->map_track[ref] != 0)
in gnt_unref().

So leave them in place. Each backend driver will disconnect and reconnect
as the guest comes back up again and reconnects, and it all works out OK
in the end as the old refs get dropped.

Fixes: de26b2619789 ("hw/xen: Implement soft reset for emulated gnttab")
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
hw/i386/kvm/xen_gnttab.c