diff options
Diffstat (limited to 'fs/ext4/ioctl.c')
-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, | |||
104 | struct ext4_inode_info *ei_bl; | 104 | struct ext4_inode_info *ei_bl; |
105 | struct ext4_sb_info *sbi = EXT4_SB(sb); | 105 | struct ext4_sb_info *sbi = EXT4_SB(sb); |
106 | 106 | ||
107 | if (inode->i_nlink != 1 || !S_ISREG(inode->i_mode)) { | 107 | if (inode->i_nlink != 1 || !S_ISREG(inode->i_mode)) |
108 | err = -EINVAL; | 108 | return -EINVAL; |
109 | goto swap_boot_out; | ||
110 | } | ||
111 | 109 | ||
112 | if (!inode_owner_or_capable(inode) || !capable(CAP_SYS_ADMIN)) { | 110 | if (!inode_owner_or_capable(inode) || !capable(CAP_SYS_ADMIN)) |
113 | err = -EPERM; | 111 | return -EPERM; |
114 | goto swap_boot_out; | ||
115 | } | ||
116 | 112 | ||
117 | inode_bl = ext4_iget(sb, EXT4_BOOT_LOADER_INO); | 113 | inode_bl = ext4_iget(sb, EXT4_BOOT_LOADER_INO); |
118 | if (IS_ERR(inode_bl)) { | 114 | if (IS_ERR(inode_bl)) |
119 | err = PTR_ERR(inode_bl); | 115 | return PTR_ERR(inode_bl); |
120 | goto swap_boot_out; | ||
121 | } | ||
122 | ei_bl = EXT4_I(inode_bl); | 116 | ei_bl = EXT4_I(inode_bl); |
123 | 117 | ||
124 | filemap_flush(inode->i_mapping); | 118 | filemap_flush(inode->i_mapping); |
@@ -193,20 +187,14 @@ static long swap_inode_boot_loader(struct super_block *sb, | |||
193 | ext4_mark_inode_dirty(handle, inode); | 187 | ext4_mark_inode_dirty(handle, inode); |
194 | } | 188 | } |
195 | } | 189 | } |
196 | |||
197 | ext4_journal_stop(handle); | 190 | ext4_journal_stop(handle); |
198 | |||
199 | ext4_double_up_write_data_sem(inode, inode_bl); | 191 | ext4_double_up_write_data_sem(inode, inode_bl); |
200 | 192 | ||
201 | journal_err_out: | 193 | journal_err_out: |
202 | ext4_inode_resume_unlocked_dio(inode); | 194 | ext4_inode_resume_unlocked_dio(inode); |
203 | ext4_inode_resume_unlocked_dio(inode_bl); | 195 | ext4_inode_resume_unlocked_dio(inode_bl); |
204 | |||
205 | unlock_two_nondirectories(inode, inode_bl); | 196 | unlock_two_nondirectories(inode, inode_bl); |
206 | |||
207 | iput(inode_bl); | 197 | iput(inode_bl); |
208 | |||
209 | swap_boot_out: | ||
210 | return err; | 198 | return err; |
211 | } | 199 | } |
212 | 200 | ||