]> git.ipfire.org Git - thirdparty/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)
committerMichael Tokarev <mjt@tls.msk.ru>
Thu, 9 Nov 2023 13:39:13 +0000 (16:39 +0300)
commit0f2dd05b9f9ae554312832e7c3b1eb9b88738fca
treec94daf2a53cae35eaf8be1164f64482786c59827
parent5450203719f64907e0498eddabae15eadd4aee07
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.

Cc: qemu-stable@nongnu.org
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>
(cherry picked from commit 3de75ed352411899dbc9222e82fe164890c77e78)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
hw/i386/kvm/xen_gnttab.c