Skip to content

Commit

Permalink
hw/xen: don't clear map_track[] in xen_gnttab_reset()
Browse files Browse the repository at this point in the history
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: de26b26 ("hw/xen: Implement soft reset for emulated gnttab")
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
  • Loading branch information
dwmw2 committed Nov 6, 2023
1 parent 18e83f2 commit 3de75ed
Showing 1 changed file with 0 additions and 2 deletions.
2 changes: 0 additions & 2 deletions hw/i386/kvm/xen_gnttab.c
Original file line number Diff line number Diff line change
Expand Up @@ -541,7 +541,5 @@ int xen_gnttab_reset(void)
s->entries.v1[GNTTAB_RESERVED_XENSTORE].flags = GTF_permit_access;
s->entries.v1[GNTTAB_RESERVED_XENSTORE].frame = XEN_SPECIAL_PFN(XENSTORE);

memset(s->map_track, 0, s->max_frames * ENTRIES_PER_FRAME_V1);

return 0;
}

0 comments on commit 3de75ed

Please sign in to comment.