linux/fs/ext4
Theodore Ts'o fea01489f7 ext4: check for allocation block validity with block group locked
commit 8d5a803c6a upstream.

With commit 044e6e3d74: "ext4: don't update checksum of new
initialized bitmaps" the buffer valid bit will get set without
actually setting up the checksum for the allocation bitmap, since the
checksum will get calculated once we actually allocate an inode or
block.

If we are doing this, then we need to (re-)check the verified bit
after we take the block group lock.  Otherwise, we could race with
another process reading and verifying the bitmap, which would then
complain about the checksum being invalid.

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1780137

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
[bwh: Backported to 3.16: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2018-11-20 18:05:39 +00:00
..
acl.c ext4: Don't clear SGID when inheriting ACLs 2017-10-12 15:28:09 +01:00
acl.h ext2/3/4: use generic posix ACL infrastructure 2014-01-25 23:58:19 -05:00
balloc.c ext4: check for allocation block validity with block group locked 2018-11-20 18:05:39 +00:00
bitmap.c ext4: Replace open coded mdata csum feature to helper function 2014-11-05 11:43:06 +00:00
block_validity.c fs/ext4: use rbtree postorder iteration helper instead of opencoding 2014-01-23 16:37:03 -08:00
dir.c ext4: force revalidation of directory pointer after seekdir(2) 2018-10-21 08:45:09 +01:00
ext4.h ext4: avoid running out of journal credits when appending to an inline file 2018-09-25 23:47:29 +01:00
ext4_extents.h ext4: verify the depth of extent tree in ext4_find_extent() 2018-09-25 23:47:27 +01:00
ext4_jbd2.c ext4: fix potential use after free in __ext4_journal_stop 2015-12-13 17:48:47 +00:00
ext4_jbd2.h ext4: make local functions static 2014-05-12 10:50:23 -04:00
extents.c ext4: verify the depth of extent tree in ext4_find_extent() 2018-09-25 23:47:27 +01:00
extents_status.c ext4: fix data corruption caused by unwritten and delayed extents 2015-05-12 09:36:39 +01:00
extents_status.h ext4: add ext4_es_store_pblock_status() 2014-02-19 20:15:15 -05:00
file.c ext4: do not update s_last_mounted of a frozen fs 2018-11-20 18:04:53 +00:00
fsync.c ext4: Fix fsync error handling after filesystem abort 2013-06-12 22:38:04 -04:00
hash.c ext4: reduce one "if" comparison in ext4_dirhash() 2013-02-01 22:33:21 -05:00
ialloc.c ext4: check for allocation block validity with block group locked 2018-11-20 18:05:39 +00:00
indirect.c ext4: protect i_disksize update by i_data_sem in direct write path 2018-10-21 08:44:57 +01:00
inline.c ext4: fix inline data updates with checksums enabled 2018-11-20 18:05:39 +00:00
inode.c ext4: fix inline data updates with checksums enabled 2018-11-20 18:05:39 +00:00
ioctl.c ext4: Replace open coded mdata csum feature to helper function 2014-11-05 11:43:06 +00:00
Kconfig ext4: fix Kconfig documentation for CONFIG_EXT4_DEBUG 2013-04-21 20:32:03 -04:00
Makefile ext4: Remove CONFIG_EXT4_FS_XATTR 2012-12-10 16:30:43 -05:00
mballoc.c ext4: only look at the bg_flags field if it is valid 2018-09-25 23:47:26 +01:00
mballoc.h ext4: remove unused ac_ex_scanned 2014-02-20 13:32:10 -05:00
migrate.c ext4: correctly migrate a file with a hole at the beginning 2015-07-20 14:38:52 +01:00
mmp.c ext4: Replace open coded mdata csum feature to helper function 2014-11-05 11:43:06 +00:00
move_extent.c ext4: add lockdep annotations for i_data_sem 2016-05-01 00:06:07 +02:00
namei.c do d_instantiate/unlock_new_inode combinations safely 2018-10-21 08:46:03 +01:00
page-io.c Clean ups and miscellaneous bug fixes, in particular for the new 2014-06-08 13:03:35 -07:00
resize.c ext4: fix fencepost error in check for inode count overflow during resize 2018-11-20 18:05:03 +00:00
super.c ext4: check superblock mapped prior to committing 2018-11-20 18:05:32 +00:00
symlink.c ext4: Remove CONFIG_EXT4_FS_XATTR 2012-12-10 16:30:43 -05:00
truncate.h ext4: move common truncate functions to header file 2011-06-27 19:16:04 -04:00
xattr.c ext4: don't read out of bounds when checking for in-inode xattrs 2018-11-20 18:05:01 +00:00
xattr.h ext4: add extra checks to ext4_xattr_block_get() 2018-10-21 08:45:08 +01:00
xattr_security.c Merge branch 'for_linus' into for_linus_merged 2012-01-10 11:54:07 -05:00
xattr_trusted.c ext2/3/4: delete unneeded includes of module.h 2012-01-09 13:52:10 +01:00
xattr_user.c ext2/3/4: delete unneeded includes of module.h 2012-01-09 13:52:10 +01:00