From: Glauber Costa Date: Thu, 27 Jun 2013 23:52:14 +0000 (+1000) Subject: inode: move inode to a different list inside lock X-Git-Tag: next-20130628~3^2~418 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=d9bb6458e6e6ed7b7e57e243bd8102662aa357d9;p=karo-tx-linux.git inode: move inode to a different list inside lock When removing an element from the lru, this will be done today after the lock is released. This is a clear mistake, although we are not sure if the bugs we are seeing are related to this. All list manipulations are done inside the lock, and so should this one. Signed-off-by: Glauber Costa Tested-by: Michal Hocko Cc: Dave Chinner Signed-off-by: Andrew Morton --- diff --git a/fs/inode.c b/fs/inode.c index b91067bdcc3f..30b6f55bcaf0 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -735,9 +735,9 @@ inode_lru_isolate(struct list_head *item, spinlock_t *lru_lock, void *arg) WARN_ON(inode->i_state & I_NEW); inode->i_state |= I_FREEING; + list_move(&inode->i_lru, freeable); spin_unlock(&inode->i_lock); - list_move(&inode->i_lru, freeable); this_cpu_dec(nr_unused); return LRU_REMOVED; }