diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 55d4f461992c..c343cdc9dc15 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -155,15 +155,14 @@ void ext4_evict_inode(struct inode *inode) goto no_delete; } - if (!is_bad_inode(inode)) - dquot_initialize(inode); + if (is_bad_inode(inode)) + goto no_delete; + dquot_initialize(inode); if (ext4_should_order_data(inode)) ext4_begin_ordered_truncate(inode, 0); truncate_inode_pages(&inode->i_data, 0); - if (is_bad_inode(inode)) - goto no_delete; handle = ext4_journal_start(inode, ext4_blocks_for_truncate(inode)+3); if (IS_ERR(handle)) { diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c index 2e0e34f957cc..c4bf1ad616b6 100644 --- a/fs/ext4/namei.c +++ b/fs/ext4/namei.c @@ -1979,7 +1979,7 @@ int ext4_orphan_add(handle_t *handle, struct inode *inode) struct ext4_iloc iloc; int err = 0, rc; - if (!ext4_handle_valid(handle)) + if (!ext4_handle_valid(handle) || is_bad_inode(inode)) return 0; mutex_lock(&EXT4_SB(sb)->s_orphan_lock);