Theodore Ts'o
2ec0ae3ace
ext4: Fix race in ext4_inode_info.i_cached_extent
...
If two CPU's simultaneously call ext4_ext_get_blocks() at the same
time, there is nothing protecting the i_cached_extent structure from
being used and updated at the same time. This could potentially cause
the wrong location on disk to be read or written to, including
potentially causing the corruption of the block group descriptors
and/or inode table.
This bug has been in the ext4 code since almost the very beginning of
ext4's development. Fortunately once the data is stored in the page
cache cache, ext4_get_blocks() doesn't need to be called, so trying to
replicate this problem to the point where we could identify its root
cause was *extremely* difficult. Many thanks to Kevin Shanahan for
working over several months to be able to reproduce this easily so we
could finally nail down the cause of the corruption.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Reviewed-by: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
2009-05-15 09:07:28 -04:00
..
acl.c
New helper - current_umask()
2009-03-31 23:00:26 -04:00
acl.h
ext4: Rename ext4dev to ext4
2008-10-10 20:02:48 -04:00
balloc.c
ext4: Use lowercase names of quota functions
2009-03-26 02:18:36 +01:00
bitmap.c
ext4: Change unsigned long to unsigned int
2008-11-05 00:14:04 -05:00
dir.c
ext4: New rec_len encoding for very large blocksizes
2009-02-14 23:01:36 -05:00
ext4.h
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
2009-04-01 10:57:49 -07:00
ext4_extents.h
ext4: Validate extent details only when read from the disk
2009-03-27 16:39:58 -04:00
ext4_i.h
ext4: New inode/block allocation algorithms for flex_bg filesystems
2009-03-12 12:18:34 -04:00
ext4_jbd2.c
ext4: Allow ext4 to run without a journal
2009-01-07 00:06:22 -05:00
ext4_jbd2.h
ext4: Remove "extents" mount option
2009-01-06 14:53:16 -05:00
ext4_sb.h
ext4: Add sysfs support
2009-03-31 09:10:09 -04:00
extents.c
ext4: Fix race in ext4_inode_info.i_cached_extent
2009-05-15 09:07:28 -04:00
file.c
ext4: Fix discard of inode prealloc space with delayed allocation.
2009-03-27 22:36:43 -04:00
fsync.c
ext4: Add debugging markers that can be used by systemtap
2008-10-05 20:50:06 -04:00
group.h
ext4: Rename read_block_bitmap() to ext4_read_block_bitmap()
2008-07-11 19:27:31 -04:00
hash.c
ext4: Add support for non-native signed/unsigned htree hash algorithms
2008-10-28 13:21:44 -04:00
ialloc.c
ext4: Fix potential inode allocation soft lockup in Orlov allocator
2009-04-22 21:00:36 -04:00
inode.c
ext4: Clear the unwritten buffer_head flag after the extent is initialized
2009-05-14 17:05:39 -04:00
ioctl.c
ext4: add EXT4_IOC_ALLOC_DA_BLKS ioctl
2009-02-26 01:04:07 -05:00
Kconfig
trivial: fix typos/grammar errors in Kconfig texts
2009-03-30 15:22:01 +02:00
Makefile
ext4: Rename ext4dev to ext4
2008-10-10 20:02:48 -04:00
mballoc.c
ext4: fix locking typo in mballoc which could cause soft lockup hangs
2009-03-27 19:43:21 -04:00
mballoc.h
ext4: Rename pa_linear to pa_type
2009-03-27 17:16:58 -04:00
migrate.c
ext4: Fix NULL dereference in ext4_ext_migrate()'s error handling
2009-02-15 20:02:19 -05:00
namei.c
ext4: Use lowercase names of quota functions
2009-03-26 02:18:36 +01:00
namei.h
resize.c
ext4: Use atomic_t's in struct flex_groups
2009-03-04 19:09:10 -05:00
super.c
ext4: check block device size on mount
2009-04-07 14:07:47 -04:00
symlink.c
ext4: Rename ext4dev to ext4
2008-10-10 20:02:48 -04:00
xattr.c
ext4: Use lowercase names of quota functions
2009-03-26 02:18:36 +01:00
xattr.h
ext4: Rename ext4dev to ext4
2008-10-10 20:02:48 -04:00
xattr_security.c
ext4: move headers out of include/linux
2008-04-29 18:13:32 -04:00
xattr_trusted.c
ext4: remove double definitions of xattr macros
2008-07-11 19:27:31 -04:00
xattr_user.c
ext4: remove double definitions of xattr macros
2008-07-11 19:27:31 -04:00