[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v4 12/17] xen: mapcache: Unmap first entries in buckets
On Tue, Apr 30, 2024 at 6:50 PM Edgar E. Iglesias <edgar.iglesias@xxxxxxxxx> wrote: > > From: "Edgar E. Iglesias" <edgar.iglesias@xxxxxxx> > > When invalidating memory ranges, if we happen to hit the first > entry in a bucket we were never unmapping it. This was harmless > for foreign mappings but now that we're looking to reuse the > mapcache for transient grant mappings, we must unmap entries > when invalidated. > > Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xxxxxxx> > --- > hw/xen/xen-mapcache.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/hw/xen/xen-mapcache.c b/hw/xen/xen-mapcache.c > index 4f98d284dd..0365311788 100644 > --- a/hw/xen/xen-mapcache.c > +++ b/hw/xen/xen-mapcache.c > @@ -486,18 +486,22 @@ static void > xen_invalidate_map_cache_entry_unlocked(MapCache *mc, > return; > } > entry->lock--; > - if (entry->lock > 0 || pentry == NULL) { > + if (entry->lock > 0) { > return; > } > > - pentry->next = entry->next; > ram_block_notify_remove(entry->vaddr_base, entry->size, entry->size); > if (munmap(entry->vaddr_base, entry->size) != 0) { > perror("unmap fails"); > exit(-1); > } > - g_free(entry->valid_mapping); > - g_free(entry); > + if (pentry) { > + pentry->next = entry->next; > + g_free(entry->valid_mapping); > + g_free(entry); > + } else { > + memset(entry, 0, sizeof *entry); I noticed that we're leaking entry->valid_mapping here. I'll fix this for v5. Cheers, Edgar > + } > } > > typedef struct XenMapCacheData { > -- > 2.40.1 >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |