1
0
Fork 0
alistair23-linux/fs/ext2
Jan Kara 7ba3ec5749 ext2: Fix fs corruption in ext2_get_xip_mem()
Commit 8e3dffc651 "Ext2: mark inode dirty after the function
dquot_free_block_nodirty is called" unveiled a bug in __ext2_get_block()
called from ext2_get_xip_mem(). That function called ext2_get_block()
mistakenly asking it to map 0 blocks while 1 was intended. Before the
above mentioned commit things worked out fine by luck but after that commit
we started returning that we allocated 0 blocks while we in fact
allocated 1 block and thus allocation was looping until all blocks in
the filesystem were exhausted.

Fix the problem by properly asking for one block and also add assertion
in ext2_get_blocks() to catch similar problems.

Reported-and-tested-by: Andiry Xu <andiry.xu@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
2013-11-05 11:26:47 +01:00
..
Kconfig fs/Kconfig: move ext2, ext3, ext4, JBD, JBD2 out 2008-10-20 11:43:59 -07:00
Makefile switch ext2 to simple_fsync() 2009-06-11 21:36:12 -04:00
acl.c userns: Convert extN to support kuids and kgids in posix acls 2012-09-18 01:01:36 -07:00
acl.h ext2: remove duplicate 'ext2_get_acl()' define 2011-07-29 23:21:50 -07:00
balloc.c Ext2: remove the static function release_blocks to optimize the kernel 2013-02-07 16:44:56 +01:00
dir.c [readdir] simple local unixlike: switch to ->iterate() 2013-06-29 12:46:47 +04:00
ext2.h userns: Convert ext2 to use kuid/kgid where appropriate. 2012-05-15 14:59:26 -07:00
file.c fs: take the ACL checks to common code 2011-07-25 14:30:23 -04:00
ialloc.c ext2: Fix BUG_ON in evict() on inode deletion 2013-03-13 15:23:44 +01:00
inode.c ext2: Fix fs corruption in ext2_get_xip_mem() 2013-11-05 11:26:47 +01:00
ioctl.c new helper: file_inode(file) 2013-02-22 23:31:31 -05:00
namei.c [O_TMPFILE] it's still short a few helpers, but infrastructure should be OK now... 2013-06-29 12:57:10 +04:00
super.c fs: Limit sys_mount to only request filesystem modules. 2013-03-03 19:36:31 -08:00
symlink.c ext2: symlink must be handled via filesystem specific operation 2010-04-12 21:11:25 +02:00
xattr.c Ext2: return ENOMEM rather than EIO if sb_getblk fails 2013-01-21 11:19:57 +01:00
xattr.h fs/vfs/security: pass last path component to LSM on inode creation 2011-02-01 11:12:29 -05:00
xattr_security.c migrate ext2_fs.h guts to fs/ext2/ext2.h 2012-03-31 16:03:16 -04:00
xattr_trusted.c migrate ext2_fs.h guts to fs/ext2/ext2.h 2012-03-31 16:03:16 -04:00
xattr_user.c ext2/3/4: delete unneeded includes of module.h 2012-01-09 13:52:10 +01:00
xip.c ext2: Fix fs corruption in ext2_get_xip_mem() 2013-11-05 11:26:47 +01:00
xip.h xip: support non-struct page backed memory 2008-04-28 08:58:23 -07:00