X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=mm%2Fballoon_compaction.c;h=300117f1a08f35c27c531d55ed0a08a1a9b81e50;hb=575361a2cbe0bfe1ef9bf43a8c017074f913c4e3;hp=d3116be5a00fa51646b5a0b45683a138a4ed3f7c;hpb=3419b45039c6b799c974a8019361c045e7ca232c;p=sagit-ice-cold%2Fkernel_xiaomi_msm8998.git diff --git a/mm/balloon_compaction.c b/mm/balloon_compaction.c index d3116be5a00f..300117f1a08f 100644 --- a/mm/balloon_compaction.c +++ b/mm/balloon_compaction.c @@ -61,6 +61,7 @@ struct page *balloon_page_dequeue(struct balloon_dev_info *b_dev_info) bool dequeued_page; dequeued_page = false; + spin_lock_irqsave(&b_dev_info->pages_lock, flags); list_for_each_entry_safe(page, tmp, &b_dev_info->pages, lru) { /* * Block others from accessing the 'page' while we get around @@ -75,15 +76,14 @@ struct page *balloon_page_dequeue(struct balloon_dev_info *b_dev_info) continue; } #endif - spin_lock_irqsave(&b_dev_info->pages_lock, flags); balloon_page_delete(page); __count_vm_event(BALLOON_DEFLATE); - spin_unlock_irqrestore(&b_dev_info->pages_lock, flags); unlock_page(page); dequeued_page = true; break; } } + spin_unlock_irqrestore(&b_dev_info->pages_lock, flags); if (!dequeued_page) { /*