Robert Foley <robert.fo...@linaro.org> writes:
> From: "Emilio G. Cota" <c...@braap.org> > > The radix tree is append-only, but we can fail to insert > a PageDesc if the insertion races with another thread. > > Signed-off-by: Emilio G. Cota <c...@braap.org> > Signed-off-by: Robert Foley <robert.fo...@linaro.org> > --- > accel/tcg/translate-all.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c > index 3708aab36b..3fb71a1503 100644 > --- a/accel/tcg/translate-all.c > +++ b/accel/tcg/translate-all.c > @@ -547,6 +547,15 @@ static PageDesc *page_find_alloc(tb_page_addr_t index, > int alloc) > #endif > existing = atomic_cmpxchg(lp, NULL, pd); > if (unlikely(existing)) { > +#ifndef CONFIG_USER_ONLY > + { > + int i; > + > + for (i = 0; i < V_L2_SIZE; i++) { > + qemu_spin_destroy(&pd[i].lock); > + } > + } > +#endif > g_free(pd); Erg that function is starting to look a bit ugly but I guess cleaning it up with some helpers is outside the current scope. Reviewed-by: Alex Bennée <alex.ben...@linaro.org> -- Alex Bennée