diff --git a/fs/inode.c b/fs/inode.c index 1396f79b2551..b28a61978d88 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -812,6 +812,8 @@ static void evict(struct inode *inode) { const struct super_operations *op = inode->i_sb->s_op; + might_sleep(); + BUG_ON(!(inode_state_read_once(inode) & I_FREEING)); BUG_ON(!list_empty(&inode->i_lru)); @@ -1968,7 +1970,6 @@ static void iput_final(struct inode *inode) */ void iput(struct inode *inode) { - might_sleep(); if (unlikely(!inode)) return;