In the future, user may want to allocate static memory at runtime, and it is quite important to get the code protected from concurrent access.
Re-use heap_lock to protect concurrent access in alloc_staticmem_pages. Signed-off-by: Penny Zheng <penny.zh...@arm.com> --- changes v2: - new commit --- xen/common/page_alloc.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index a0eea5f1a4..c6ccfc3216 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -1087,6 +1087,9 @@ static struct page_info *alloc_staticmem_pages(unsigned long nr_mfns, nr_mfns, mfn_x(smfn)); return NULL; } + + spin_lock(&heap_lock); + pg = mfn_to_page(smfn); for ( i = 0; i < nr_mfns; i++ ) @@ -1127,6 +1130,8 @@ static struct page_info *alloc_staticmem_pages(unsigned long nr_mfns, !(memflags & MEMF_no_icache_flush)); } + spin_unlock(&heap_lock); + if ( need_tlbflush ) filtered_flush_tlb_mask(tlbflush_timestamp); -- 2.25.1