diff options
author | Theodore Ts'o <tytso@mit.edu> | 2014-02-17 20:44:36 -0500 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2014-02-17 20:44:36 -0500 |
commit | d8558a297878f1a7af995f6801983783e1487208 (patch) | |
tree | d47949887b7f9ee59b80d5636e4f10dc26b1522a /fs | |
parent | e67bc2b35905cb82e9ee1f485095d8c0739b68c8 (diff) | |
download | lwn-d8558a297878f1a7af995f6801983783e1487208.tar.gz lwn-d8558a297878f1a7af995f6801983783e1487208.zip |
ext4: clean up error handling in swap_inode_boot_loader()
Tighten up the code to make the code easier to read and maintain.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ext4/ioctl.c | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c index a2a837f00407..0f2252ec274d 100644 --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c @@ -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; } |