Skip to content
  • Jan Kara's avatar
    ext2: Fix fs corruption in ext2_get_xip_mem() · b4644ca4
    Jan Kara authored
    commit 7ba3ec5749ddb61f79f7be17b5fd7720eebc52de upstream.
    
    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: default avatarAndiry Xu <andiry.xu@gmail.com>
    Signed-off-by: default avatarJan Kara <jack@suse.cz>
    Cc: Wang Nan <wangnan0@huawei.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    b4644ca4