]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
jbd2: fix r_count overflows leading to buffer overflow in journal recovery
authorDarrick J. Wong <darrick.wong@oracle.com>
Thu, 14 May 2015 23:11:50 +0000 (19:11 -0400)
committerSasha Levin <sasha.levin@oracle.com>
Wed, 10 Jun 2015 17:42:24 +0000 (13:42 -0400)
commitd4842a5455e20003780bd81c429065756ed1ebcb
treedf785995f13be1413977cdbec8d5a7c6dbfbe2b1
parentc164d09cd8eb3f6b8c183409695dc0eb3c4c503a
jbd2: fix r_count overflows leading to buffer overflow in journal recovery

[ Upstream commit e531d0bceb402e643a4499de40dd3fa39d8d2e43 ]

The journal revoke block recovery code does not check r_count for
sanity, which means that an evil value of r_count could result in
the kernel reading off the end of the revoke table and into whatever
garbage lies beyond.  This could crash the kernel, so fix that.

However, in testing this fix, I discovered that the code to write
out the revoke tables also was not correctly checking to see if the
block was full -- the current offset check is fine so long as the
revoke table space size is a multiple of the record size, but this
is not true when either journal_csum_v[23] are set.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Jan Kara <jack@suse.cz>
Cc: stable@vger.kernel.org
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
fs/jbd2/recovery.c
fs/jbd2/revoke.c