• J
    ext2: Fix fs corruption in ext2_get_xip_mem() · 7ba3ec57
    Jan Kara 提交于
    Commit 8e3dffc6 "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: NAndiry Xu <andiry.xu@gmail.com>
    Signed-off-by: NJan Kara <jack@suse.cz>
    7ba3ec57
inode.c 44.8 KB