linux-stable/fs/ext4
Eric Whitney 5bf4376065 ext4: fix end of leaf partial cluster handling
The fix in commit ad6599ab3a ("ext4: fix premature freeing of
partial clusters split across leaf blocks"), intended to avoid
dereferencing an invalid extent pointer when determining whether a
partial cluster should be freed, wasn't quite good enough.  Assure that
at least one extent remains at the start of the leaf once the hole has
been punched.  Otherwise, the pointer to the extent to the right of the
hole will be invalid and a partial cluster will be incorrectly freed.

Set partial_cluster to 0 when we can tell we've hit the left edge of
the punched region within the leaf.  This prevents incorrect freeing
of a partial cluster when ext4_ext_rm_leaf is called one last time
during extent tree traversal after the punched region has been removed.

Adjust comments to reflect code changes and a correction.  Remove a bit
of dead code.

Signed-off-by: Eric Whitney <enwlinux@gmail.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2014-11-23 00:58:11 -05:00
..
acl.c ext2/3/4: use generic posix ACL infrastructure 2014-01-25 23:58:19 -05:00
acl.h ext2/3/4: use generic posix ACL infrastructure 2014-01-25 23:58:19 -05:00
balloc.c ext4: move error report out of atomic context in ext4_init_block_bitmap() 2014-10-13 03:42:12 -04:00
bitmap.c ext4: Replace open coded mdata csum feature to helper function 2014-10-13 03:36:16 -04: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: convert ext4_bread() to use the ERR_PTR convention 2014-08-29 20:52:15 -04:00
ext4.h ext4: kill ext4_kvfree() 2014-11-20 12:19:11 -05:00
ext4_extents.h ext4: teach ext4_ext_find_extent() to realloc path if necessary 2014-09-01 14:40:09 -04:00
ext4_jbd2.c ext4: fix over-defensive complaint after journal abort 2014-10-01 22:23:15 -04:00
ext4_jbd2.h ext4: don't use MAXQUOTAS value 2014-09-11 11:15:15 -04:00
extents.c ext4: fix end of leaf partial cluster handling 2014-11-23 00:58:11 -05:00
extents_status.c A large number of cleanups and bug fixes, with some (minor) journal 2014-10-20 09:50:11 -07:00
extents_status.h ext4: track extent status tree shrinker delay statictics 2014-09-01 22:26:49 -04:00
file.c ext4: prevent bugon on race between write/fcntl 2014-10-30 10:53:16 -04: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: fix oops when loading block bitmap failed 2014-10-30 10:53:16 -04:00
indirect.c ext4: prepare to drop EXT4_STATE_DELALLOC_RESERVED 2014-09-04 18:07:25 -04:00
inline.c ext4: Replace open coded mdata csum feature to helper function 2014-10-13 03:36:16 -04:00
inode.c ext4: bail early when clearing inode journal flag fails 2014-10-30 10:53:17 -04:00
ioctl.c ext4: Replace open coded mdata csum feature to helper function 2014-10-13 03:36:16 -04: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: kill ext4_kvfree() 2014-11-20 12:19:11 -05:00
mballoc.h ext4: remove unused ac_ex_scanned 2014-02-20 13:32:10 -05:00
migrate.c ext4: rename ext4_ext_find_extent() to ext4_find_extent() 2014-09-01 14:43:09 -04:00
mmp.c ext4: Replace open coded mdata csum feature to helper function 2014-10-13 03:36:16 -04:00
move_extent.c ext4: move_extent improve bh vanishing success factor 2014-11-05 11:52:38 -05:00
namei.c ext4: bail out from make_indexed_dir() on first error 2014-10-30 10:53:17 -04: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: kill ext4_kvfree() 2014-11-20 12:19:11 -05:00
super.c ext4: kill ext4_kvfree() 2014-11-20 12:19:11 -05:00
symlink.c ext4: Remove CONFIG_EXT4_FS_XATTR 2012-12-10 16:30:43 -05:00
truncate.h
xattr.c ext4: Replace open coded mdata csum feature to helper function 2014-10-13 03:36:16 -04:00
xattr.h ext4: each filesystem creates and uses its own mb_cache 2014-03-18 19:24:49 -04: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