|
@@ -104,21 +104,15 @@ static long swap_inode_boot_loader(struct super_block *sb,
|
|
|
struct ext4_inode_info *ei_bl;
|
|
|
struct ext4_sb_info *sbi = EXT4_SB(sb);
|
|
|
|
|
|
- if (inode->i_nlink != 1 || !S_ISREG(inode->i_mode)) {
|
|
|
- err = -EINVAL;
|
|
|
- goto swap_boot_out;
|
|
|
- }
|
|
|
+ if (inode->i_nlink != 1 || !S_ISREG(inode->i_mode))
|
|
|
+ return -EINVAL;
|
|
|
|
|
|
- if (!inode_owner_or_capable(inode) || !capable(CAP_SYS_ADMIN)) {
|
|
|
- err = -EPERM;
|
|
|
- goto swap_boot_out;
|
|
|
- }
|
|
|
+ if (!inode_owner_or_capable(inode) || !capable(CAP_SYS_ADMIN))
|
|
|
+ return -EPERM;
|
|
|
|
|
|
inode_bl = ext4_iget(sb, EXT4_BOOT_LOADER_INO);
|
|
|
- if (IS_ERR(inode_bl)) {
|
|
|
- err = PTR_ERR(inode_bl);
|
|
|
- goto swap_boot_out;
|
|
|
- }
|
|
|
+ if (IS_ERR(inode_bl))
|
|
|
+ return PTR_ERR(inode_bl);
|
|
|
ei_bl = EXT4_I(inode_bl);
|
|
|
|
|
|
filemap_flush(inode->i_mapping);
|
|
@@ -193,20 +187,14 @@ static long swap_inode_boot_loader(struct super_block *sb,
|
|
|
ext4_mark_inode_dirty(handle, inode);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
ext4_journal_stop(handle);
|
|
|
-
|
|
|
ext4_double_up_write_data_sem(inode, inode_bl);
|
|
|
|
|
|
journal_err_out:
|
|
|
ext4_inode_resume_unlocked_dio(inode);
|
|
|
ext4_inode_resume_unlocked_dio(inode_bl);
|
|
|
-
|
|
|
unlock_two_nondirectories(inode, inode_bl);
|
|
|
-
|
|
|
iput(inode_bl);
|
|
|
-
|
|
|
-swap_boot_out:
|
|
|
return err;
|
|
|
}
|
|
|
|