[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] Revert "mm: don't hold heap lock in alloc_heap_pages() longer than necessary"
commit dfe280c17dbc93c267a9fdf0caa4c0abdd64cd3c Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Wed Aug 30 12:23:23 2017 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Wed Aug 30 12:23:23 2017 +0200 Revert "mm: don't hold heap lock in alloc_heap_pages() longer than necessary" This reverts commit dab6a84aadab11f31332030a1e9f0b9282d76156, as it introduces a race with free_heap_pages(). --- xen/common/page_alloc.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index 12e06fd..9fa62d2 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -855,7 +855,6 @@ static struct page_info *alloc_heap_pages( struct page_info *pg; bool need_tlbflush = false; uint32_t tlbflush_timestamp = 0; - unsigned int dirty_cnt = 0; /* Make sure there are enough bits in memflags for nodeID. */ BUILD_BUG_ON((_MEMF_bits - _MEMF_node) < (8 * sizeof(nodeid_t))); @@ -944,8 +943,6 @@ static struct page_info *alloc_heap_pages( if ( d != NULL ) d->last_alloc_node = node; - spin_unlock(&heap_lock); - for ( i = 0; i < (1 << order); i++ ) { /* Reference count must continuously be zero for free pages. */ @@ -955,7 +952,7 @@ static struct page_info *alloc_heap_pages( { if ( !(memflags & MEMF_no_scrub) ) scrub_one_page(&pg[i]); - dirty_cnt++; + node_need_scrub[node]--; } pg[i].count_info = PGC_state_inuse; @@ -977,8 +974,6 @@ static struct page_info *alloc_heap_pages( check_one_page(&pg[i]); } - spin_lock(&heap_lock); - node_need_scrub[node] -= dirty_cnt; spin_unlock(&heap_lock); if ( need_tlbflush ) -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |