vmscan: protect zone rotation stats by lru lock
The zone's rotation statistics must not be accessed without the corresponding LRU lock held. Fix an unprotected write in shrink_active_list(). Acked-by: Rik van Riel <riel@redhat.com> Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Signed-off-by: Johannes Weiner <hannes@saeurebad.de> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
33b07db9f3
commit
2a1dc50974
1 changed files with 1 additions and 1 deletions
|
@ -1248,6 +1248,7 @@ static void shrink_active_list(unsigned long nr_pages, struct zone *zone,
|
|||
list_add(&page->lru, &l_inactive);
|
||||
}
|
||||
|
||||
spin_lock_irq(&zone->lru_lock);
|
||||
/*
|
||||
* Count referenced pages from currently used mappings as
|
||||
* rotated, even though they are moved to the inactive list.
|
||||
|
@ -1263,7 +1264,6 @@ static void shrink_active_list(unsigned long nr_pages, struct zone *zone,
|
|||
|
||||
pgmoved = 0;
|
||||
lru = LRU_BASE + file * LRU_FILE;
|
||||
spin_lock_irq(&zone->lru_lock);
|
||||
while (!list_empty(&l_inactive)) {
|
||||
page = lru_to_page(&l_inactive);
|
||||
prefetchw_prev_lru_page(page, &l_inactive, flags);
|
||||
|
|
Loading…
Reference in a new issue