ext4: fix scheduling in atomic on group checksum failure
authorJan Kara <jack@suse.cz>
Fri, 12 Feb 2016 04:15:12 +0000 (23:15 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Feb 2016 20:01:14 +0000 (12:01 -0800)
commit33f48f8ab0b94fdd1249f561b15c872c36e560c8
tree359ca20c9690ee747b79228362d4fccd6bfa2c54
parent5859b9077763ea1c3f4db47522bdcf300aedb080
ext4: fix scheduling in atomic on group checksum failure

commit 05145bd799e498ce4e3b5145894174ee881f02b0 upstream.

When block group checksum is wrong, we call ext4_error() while holding
group spinlock from ext4_init_block_bitmap() or
ext4_init_inode_bitmap() which results in scheduling while in atomic.
Fix the issue by calling ext4_error() later after dropping the spinlock.

Reported-by: Dmitry Vyukov <dvyukov@google.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/ext4/balloc.c
fs/ext4/ialloc.c