diff options
Diffstat (limited to 'mm/mlock.c')
-rw-r--r-- | mm/mlock.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/mm/mlock.c b/mm/mlock.c index b3b4a78b7802..b1a7c8007c89 100644 --- a/mm/mlock.c +++ b/mm/mlock.c | |||
@@ -241,6 +241,7 @@ static void __munlock_pagevec(struct pagevec *pvec, struct zone *zone) | |||
241 | { | 241 | { |
242 | int i; | 242 | int i; |
243 | int nr = pagevec_count(pvec); | 243 | int nr = pagevec_count(pvec); |
244 | int delta_munlocked = -nr; | ||
244 | 245 | ||
245 | /* Phase 1: page isolation */ | 246 | /* Phase 1: page isolation */ |
246 | spin_lock_irq(&zone->lru_lock); | 247 | spin_lock_irq(&zone->lru_lock); |
@@ -251,9 +252,6 @@ static void __munlock_pagevec(struct pagevec *pvec, struct zone *zone) | |||
251 | struct lruvec *lruvec; | 252 | struct lruvec *lruvec; |
252 | int lru; | 253 | int lru; |
253 | 254 | ||
254 | /* we have disabled interrupts */ | ||
255 | __mod_zone_page_state(zone, NR_MLOCK, -1); | ||
256 | |||
257 | if (PageLRU(page)) { | 255 | if (PageLRU(page)) { |
258 | lruvec = mem_cgroup_page_lruvec(page, zone); | 256 | lruvec = mem_cgroup_page_lruvec(page, zone); |
259 | lru = page_lru(page); | 257 | lru = page_lru(page); |
@@ -275,8 +273,10 @@ skip_munlock: | |||
275 | */ | 273 | */ |
276 | pvec->pages[i] = NULL; | 274 | pvec->pages[i] = NULL; |
277 | put_page(page); | 275 | put_page(page); |
276 | delta_munlocked++; | ||
278 | } | 277 | } |
279 | } | 278 | } |
279 | __mod_zone_page_state(zone, NR_MLOCK, delta_munlocked); | ||
280 | spin_unlock_irq(&zone->lru_lock); | 280 | spin_unlock_irq(&zone->lru_lock); |
281 | 281 | ||
282 | /* Phase 2: page munlock and putback */ | 282 | /* Phase 2: page munlock and putback */ |