mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 03:40:35 +09:00
xfs: range check ri_cnt when recovering log items
commit d6abecb825 upstream.
Range check the region counter when we're reassembling regions from log
items during log recovery. In the old days ASSERT would halt the
kernel, but this isn't true any more so we have to make an explicit
error return.
Coverity-id: 1132508
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Acked-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
a102869fb1
commit
a33bcad48b
@@ -4293,7 +4293,16 @@ xlog_recover_add_to_trans(
|
||||
kmem_zalloc(item->ri_total * sizeof(xfs_log_iovec_t),
|
||||
0);
|
||||
}
|
||||
ASSERT(item->ri_total > item->ri_cnt);
|
||||
|
||||
if (item->ri_total <= item->ri_cnt) {
|
||||
xfs_warn(log->l_mp,
|
||||
"log item region count (%d) overflowed size (%d)",
|
||||
item->ri_cnt, item->ri_total);
|
||||
ASSERT(0);
|
||||
kmem_free(ptr);
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
/* Description region is ri_buf[0] */
|
||||
item->ri_buf[item->ri_cnt].i_addr = ptr;
|
||||
item->ri_buf[item->ri_cnt].i_len = len;
|
||||
|
||||
Reference in New Issue
Block a user