|
@@ -49,9 +49,8 @@ int isolate_lru_page(struct page *page, struct list_head *pagelist)
|
|
struct zone *zone = page_zone(page);
|
|
struct zone *zone = page_zone(page);
|
|
|
|
|
|
spin_lock_irq(&zone->lru_lock);
|
|
spin_lock_irq(&zone->lru_lock);
|
|
- if (PageLRU(page)) {
|
|
|
|
|
|
+ if (PageLRU(page) && get_page_unless_zero(page)) {
|
|
ret = 0;
|
|
ret = 0;
|
|
- get_page(page);
|
|
|
|
ClearPageLRU(page);
|
|
ClearPageLRU(page);
|
|
if (PageActive(page))
|
|
if (PageActive(page))
|
|
del_page_from_active_list(zone, page);
|
|
del_page_from_active_list(zone, page);
|