mm: workingset: make shadow_lru_isolate() use locking suffix
shadow_lru_isolate() disables interrupts and acquires a lock. It could use spin_lock_irq() instead. It also uses local_irq_enable() while it could use spin_unlock_irq()/xa_unlock_irq(). Use proper suffix for lock/unlock in order to enable/disable interrupts during release/acquire of a lock. Link: http://lkml.kernel.org/r/20180622151221.28167-3-bigeasy@linutronix.de Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Reviewed-by: Andrew Morton <akpm@linux-foundation.org> Cc: Vladimir Davydov <vdavydov.dev@gmail.com> Cc: Kirill Tkhai <ktkhai@virtuozzo.com> Cc: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
ae1e16da14
commit
6ca342d020
|
@ -431,7 +431,7 @@ static enum lru_status shadow_lru_isolate(struct list_head *item,
|
|||
|
||||
/* Coming from the list, invert the lock order */
|
||||
if (!xa_trylock(&mapping->i_pages)) {
|
||||
spin_unlock(lru_lock);
|
||||
spin_unlock_irq(lru_lock);
|
||||
ret = LRU_RETRY;
|
||||
goto out;
|
||||
}
|
||||
|
@ -469,13 +469,11 @@ static enum lru_status shadow_lru_isolate(struct list_head *item,
|
|||
workingset_lookup_update(mapping));
|
||||
|
||||
out_invalid:
|
||||
xa_unlock(&mapping->i_pages);
|
||||
xa_unlock_irq(&mapping->i_pages);
|
||||
ret = LRU_REMOVED_RETRY;
|
||||
out:
|
||||
local_irq_enable();
|
||||
cond_resched();
|
||||
local_irq_disable();
|
||||
spin_lock(lru_lock);
|
||||
spin_lock_irq(lru_lock);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue