aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mm/workingset.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/mm/workingset.c b/mm/workingset.c
index ed8151180899..529480c21f93 100644
--- a/mm/workingset.c
+++ b/mm/workingset.c
@@ -431,7 +431,7 @@ static enum lru_status shadow_lru_isolate(struct list_head *item,
431 431
432 /* Coming from the list, invert the lock order */ 432 /* Coming from the list, invert the lock order */
433 if (!xa_trylock(&mapping->i_pages)) { 433 if (!xa_trylock(&mapping->i_pages)) {
434 spin_unlock(lru_lock); 434 spin_unlock_irq(lru_lock);
435 ret = LRU_RETRY; 435 ret = LRU_RETRY;
436 goto out; 436 goto out;
437 } 437 }
@@ -469,13 +469,11 @@ static enum lru_status shadow_lru_isolate(struct list_head *item,
469 workingset_lookup_update(mapping)); 469 workingset_lookup_update(mapping));
470 470
471out_invalid: 471out_invalid:
472 xa_unlock(&mapping->i_pages); 472 xa_unlock_irq(&mapping->i_pages);
473 ret = LRU_REMOVED_RETRY; 473 ret = LRU_REMOVED_RETRY;
474out: 474out:
475 local_irq_enable();
476 cond_resched(); 475 cond_resched();
477 local_irq_disable(); 476 spin_lock_irq(lru_lock);
478 spin_lock(lru_lock);
479 return ret; 477 return ret;
480} 478}
481 479