|
@@ -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) {
|
|
|
/*
|