diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c index 7efceafe88302d99b53d9aeae5b12bc14e0e928f..4a5f9a41c5193777fa1ad21cd16a5fd0d4a94a23 100644 --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c @@ -172,7 +172,7 @@ static long swap_inode_boot_loader(struct super_block *sb, /* Protect extent tree against block allocations via delalloc */ ext4_double_down_write_data_sem(inode, inode_bl); - if (inode_bl->i_nlink == 0) { + if (is_bad_inode(inode_bl) || !S_ISREG(inode_bl->i_mode)) { /* this inode has never been used as a BOOT_LOADER */ set_nlink(inode_bl, 1); i_uid_write(inode_bl, 0);