diff options
Diffstat (limited to 'fs/ext4/ioctl.c')
-rw-r--r-- | fs/ext4/ioctl.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c index 0f2252ec274d..bfda18a15592 100644 --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c | |||
@@ -331,8 +331,7 @@ flags_out: | |||
331 | if (!inode_owner_or_capable(inode)) | 331 | if (!inode_owner_or_capable(inode)) |
332 | return -EPERM; | 332 | return -EPERM; |
333 | 333 | ||
334 | if (EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb, | 334 | if (ext4_has_metadata_csum(inode->i_sb)) { |
335 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) { | ||
336 | ext4_warning(sb, "Setting inode version is not " | 335 | ext4_warning(sb, "Setting inode version is not " |
337 | "supported with metadata_csum enabled."); | 336 | "supported with metadata_csum enabled."); |
338 | return -ENOTTY; | 337 | return -ENOTTY; |
@@ -532,9 +531,17 @@ group_add_out: | |||
532 | } | 531 | } |
533 | 532 | ||
534 | case EXT4_IOC_SWAP_BOOT: | 533 | case EXT4_IOC_SWAP_BOOT: |
534 | { | ||
535 | int err; | ||
535 | if (!(filp->f_mode & FMODE_WRITE)) | 536 | if (!(filp->f_mode & FMODE_WRITE)) |
536 | return -EBADF; | 537 | return -EBADF; |
537 | return swap_inode_boot_loader(sb, inode); | 538 | err = mnt_want_write_file(filp); |
539 | if (err) | ||
540 | return err; | ||
541 | err = swap_inode_boot_loader(sb, inode); | ||
542 | mnt_drop_write_file(filp); | ||
543 | return err; | ||
544 | } | ||
538 | 545 | ||
539 | case EXT4_IOC_RESIZE_FS: { | 546 | case EXT4_IOC_RESIZE_FS: { |
540 | ext4_fsblk_t n_blocks_count; | 547 | ext4_fsblk_t n_blocks_count; |