|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 3/4] mm: make MEMF_no_refcount pages safe to assign
On 29.01.2020 15:38, Paul Durrant wrote:
> @@ -2371,6 +2383,8 @@ void free_domheap_pages(struct page_info *pg, unsigned
> int order)
>
> if ( likely(d) && likely(d != dom_cow) )
> {
> + long pages = 0;
> +
> /* NB. May recursively lock from relinquish_memory(). */
> spin_lock_recursive(&d->page_alloc_lock);
>
> @@ -2386,9 +2400,11 @@ void free_domheap_pages(struct page_info *pg, unsigned
> int order)
> BUG();
> }
> arch_free_heap_page(d, &pg[i]);
> + if ( !(pg[i].count_info & PGC_no_refcount) )
> + pages--;
> }
>
> - drop_dom_ref = !domain_adjust_tot_pages(d, -(1 << order));
> + drop_dom_ref = !domain_adjust_tot_pages(d, pages);
Following from what I've just said on the previous patch, this needs
further changing then as well. There'll need to be a per-domain
"non-refcounted-pages" count, which - when transitioning from zero
to non-zero is accompanied by obtaining a domain ref, and when
transitioning back to zero causes this domain ref to be dropped.
Otherwise, once the last ref-counted page was freed, the domain
may become ready for final destruction, no matter how many non-
refcounted pages there still are on its page lists. (An alternative
model might be to include all pages in ->tot_pages, keep using just
that for the domain ref acquire/release, and subtract the new
count when e.g. comparing against ->max_pages.)
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |