diff options
Diffstat (limited to 'fs/ext4/ioctl.c')
-rw-r--r-- | fs/ext4/ioctl.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c index 42b3a73143cf..afb66d4ab5cf 100644 --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c | |||
@@ -64,18 +64,16 @@ static void swap_inode_data(struct inode *inode1, struct inode *inode2) | |||
64 | ei1 = EXT4_I(inode1); | 64 | ei1 = EXT4_I(inode1); |
65 | ei2 = EXT4_I(inode2); | 65 | ei2 = EXT4_I(inode2); |
66 | 66 | ||
67 | memswap(&inode1->i_flags, &inode2->i_flags, sizeof(inode1->i_flags)); | 67 | swap(inode1->i_flags, inode2->i_flags); |
68 | memswap(&inode1->i_version, &inode2->i_version, | 68 | swap(inode1->i_version, inode2->i_version); |
69 | sizeof(inode1->i_version)); | 69 | swap(inode1->i_blocks, inode2->i_blocks); |
70 | memswap(&inode1->i_blocks, &inode2->i_blocks, | 70 | swap(inode1->i_bytes, inode2->i_bytes); |
71 | sizeof(inode1->i_blocks)); | 71 | swap(inode1->i_atime, inode2->i_atime); |
72 | memswap(&inode1->i_bytes, &inode2->i_bytes, sizeof(inode1->i_bytes)); | 72 | swap(inode1->i_mtime, inode2->i_mtime); |
73 | memswap(&inode1->i_atime, &inode2->i_atime, sizeof(inode1->i_atime)); | ||
74 | memswap(&inode1->i_mtime, &inode2->i_mtime, sizeof(inode1->i_mtime)); | ||
75 | 73 | ||
76 | memswap(ei1->i_data, ei2->i_data, sizeof(ei1->i_data)); | 74 | memswap(ei1->i_data, ei2->i_data, sizeof(ei1->i_data)); |
77 | memswap(&ei1->i_flags, &ei2->i_flags, sizeof(ei1->i_flags)); | 75 | swap(ei1->i_flags, ei2->i_flags); |
78 | memswap(&ei1->i_disksize, &ei2->i_disksize, sizeof(ei1->i_disksize)); | 76 | swap(ei1->i_disksize, ei2->i_disksize); |
79 | ext4_es_remove_extent(inode1, 0, EXT_MAX_BLOCKS); | 77 | ext4_es_remove_extent(inode1, 0, EXT_MAX_BLOCKS); |
80 | ext4_es_remove_extent(inode2, 0, EXT_MAX_BLOCKS); | 78 | ext4_es_remove_extent(inode2, 0, EXT_MAX_BLOCKS); |
81 | 79 | ||
@@ -351,11 +349,14 @@ static int ext4_ioctl_setproject(struct file *filp, __u32 projid) | |||
351 | 349 | ||
352 | raw_inode = ext4_raw_inode(&iloc); | 350 | raw_inode = ext4_raw_inode(&iloc); |
353 | if (!EXT4_FITS_IN_INODE(raw_inode, ei, i_projid)) { | 351 | if (!EXT4_FITS_IN_INODE(raw_inode, ei, i_projid)) { |
354 | err = -EOVERFLOW; | 352 | err = ext4_expand_extra_isize(inode, |
353 | EXT4_SB(sb)->s_want_extra_isize, | ||
354 | &iloc); | ||
355 | if (err) | ||
356 | goto out_unlock; | ||
357 | } else { | ||
355 | brelse(iloc.bh); | 358 | brelse(iloc.bh); |
356 | goto out_unlock; | ||
357 | } | 359 | } |
358 | brelse(iloc.bh); | ||
359 | 360 | ||
360 | dquot_initialize(inode); | 361 | dquot_initialize(inode); |
361 | 362 | ||