Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ext2: Fix oops in ext2_get_block() called from ext2_quota_write()

ext2_quota_write() doesn't properly setup bh it passes to
ext2_get_block() and thus we hit assertion BUG_ON(maxblocks == 0) in
ext2_get_blocks() (or we could actually ask for mapping arbitrary number
of blocks depending on whatever value was on stack).

Fix ext2_quota_write() to properly fill in number of blocks to map.

CC: stable@vger.kernel.org # >= 2.6.12
Reviewed-by: "Theodore Ts'o" <tytso@mit.edu>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reported-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Jan Kara <jack@suse.cz>

Jan Kara df4e7ac0 dea4f48a

+1
+1
fs/ext2/super.c
··· 1493 1493 sb->s_blocksize - offset : towrite; 1494 1494 1495 1495 tmp_bh.b_state = 0; 1496 + tmp_bh.b_size = sb->s_blocksize; 1496 1497 err = ext2_get_block(inode, blk, &tmp_bh, 1); 1497 1498 if (err < 0) 1498 1499 goto out;