Eric Biggers 2dc8d9e19b ext4: forbid i_extra_isize not divisible by 4
i_extra_isize not divisible by 4 is problematic for several reasons:

- It causes the in-inode xattr space to be misaligned, but the xattr
  header and entries are not declared __packed to express this
  possibility.  This may cause poor performance or incorrect code
  generation on some platforms.
- When validating the xattr entries we can read past the end of the
  inode if the size available for xattrs is not a multiple of 4.
- It allows the nonsensical i_extra_isize=1, which doesn't even leave
  enough room for i_extra_isize itself.

Therefore, update ext4_iget() to consider i_extra_isize not divisible by
4 to be an error, like the case where i_extra_isize is too large.

This also matches the rule recently added to e2fsck for determining
whether an inode has valid i_extra_isize.

This patch shouldn't have any noticeable effect on
non-corrupted/non-malicious filesystems, since the size of ext4_inode
has always been a multiple of 4.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Andreas Dilger <adilger@dilger.ca>
2016-12-01 14:43:33 -05:00
..
2016-10-15 12:09:13 -07:00
2016-10-18 12:30:32 +02:00
2016-05-20 17:58:30 -07:00
2016-10-21 19:06:59 -07:00
2016-10-24 14:50:07 -04:00
2016-10-31 14:42:14 +01:00
2016-09-27 21:20:53 -04:00
2016-06-07 22:07:09 -04:00
2016-11-20 20:48:36 -05:00
2016-09-27 18:47:38 -04:00
2016-06-21 09:23:11 +10:00
2016-10-13 20:28:22 -07:00
2016-07-26 16:19:19 -07:00