xfs: explicitly pass buffer size to xfs_corruption_error
Explicitly pass the buffer length to xfs_corruption_error() instead of assuming XFS_CORRUPTION_DUMP_LEN so that we avoid dumping off the end of the buffer. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Dave Chinner <dchinner@redhat.com>
This commit is contained in:
@@ -3115,7 +3115,8 @@ xlog_recover_inode_pass2(
|
||||
if ((ldip->di_format != XFS_DINODE_FMT_EXTENTS) &&
|
||||
(ldip->di_format != XFS_DINODE_FMT_BTREE)) {
|
||||
XFS_CORRUPTION_ERROR("xlog_recover_inode_pass2(3)",
|
||||
XFS_ERRLEVEL_LOW, mp, ldip);
|
||||
XFS_ERRLEVEL_LOW, mp, ldip,
|
||||
sizeof(*ldip));
|
||||
xfs_alert(mp,
|
||||
"%s: Bad regular inode log record, rec ptr "PTR_FMT", "
|
||||
"ino ptr = "PTR_FMT", ino bp = "PTR_FMT", ino %Ld",
|
||||
@@ -3128,7 +3129,8 @@ xlog_recover_inode_pass2(
|
||||
(ldip->di_format != XFS_DINODE_FMT_BTREE) &&
|
||||
(ldip->di_format != XFS_DINODE_FMT_LOCAL)) {
|
||||
XFS_CORRUPTION_ERROR("xlog_recover_inode_pass2(4)",
|
||||
XFS_ERRLEVEL_LOW, mp, ldip);
|
||||
XFS_ERRLEVEL_LOW, mp, ldip,
|
||||
sizeof(*ldip));
|
||||
xfs_alert(mp,
|
||||
"%s: Bad dir inode log record, rec ptr "PTR_FMT", "
|
||||
"ino ptr = "PTR_FMT", ino bp = "PTR_FMT", ino %Ld",
|
||||
@@ -3139,7 +3141,8 @@ xlog_recover_inode_pass2(
|
||||
}
|
||||
if (unlikely(ldip->di_nextents + ldip->di_anextents > ldip->di_nblocks)){
|
||||
XFS_CORRUPTION_ERROR("xlog_recover_inode_pass2(5)",
|
||||
XFS_ERRLEVEL_LOW, mp, ldip);
|
||||
XFS_ERRLEVEL_LOW, mp, ldip,
|
||||
sizeof(*ldip));
|
||||
xfs_alert(mp,
|
||||
"%s: Bad inode log record, rec ptr "PTR_FMT", dino ptr "PTR_FMT", "
|
||||
"dino bp "PTR_FMT", ino %Ld, total extents = %d, nblocks = %Ld",
|
||||
@@ -3151,7 +3154,8 @@ xlog_recover_inode_pass2(
|
||||
}
|
||||
if (unlikely(ldip->di_forkoff > mp->m_sb.sb_inodesize)) {
|
||||
XFS_CORRUPTION_ERROR("xlog_recover_inode_pass2(6)",
|
||||
XFS_ERRLEVEL_LOW, mp, ldip);
|
||||
XFS_ERRLEVEL_LOW, mp, ldip,
|
||||
sizeof(*ldip));
|
||||
xfs_alert(mp,
|
||||
"%s: Bad inode log record, rec ptr "PTR_FMT", dino ptr "PTR_FMT", "
|
||||
"dino bp "PTR_FMT", ino %Ld, forkoff 0x%x", __func__,
|
||||
@@ -3162,7 +3166,8 @@ xlog_recover_inode_pass2(
|
||||
isize = xfs_log_dinode_size(ldip->di_version);
|
||||
if (unlikely(item->ri_buf[1].i_len > isize)) {
|
||||
XFS_CORRUPTION_ERROR("xlog_recover_inode_pass2(7)",
|
||||
XFS_ERRLEVEL_LOW, mp, ldip);
|
||||
XFS_ERRLEVEL_LOW, mp, ldip,
|
||||
sizeof(*ldip));
|
||||
xfs_alert(mp,
|
||||
"%s: Bad inode log record length %d, rec ptr "PTR_FMT,
|
||||
__func__, item->ri_buf[1].i_len, item);
|
||||
|
Reference in New Issue
Block a user