[XFS] prevent panic during log recovery due to bogus op_hdr length
A problem was reported where a system panicked in log recovery due to a corrupt log record. The cause of the corruption is not known but this change will at least prevent a crash for this specific scenario. Log recovery definitely needs some more work in this area. SGI-PV: 974151 SGI-Modid: xfs-linux-melb:xfs-kern:30318a Signed-off-by: Lachlan McIlroy <lachlan@sgi.com> Signed-off-by: David Chinner <dgc@sgi.com> Signed-off-by: Christoph Hellwig <hch@infradead.org>
This commit is contained in:
parent
f71354bc3a
commit
9742bb93da
1 changed files with 6 additions and 1 deletions
|
@ -2912,7 +2912,12 @@ xlog_recover_process_data(
|
|||
xlog_recover_new_tid(&rhash[hash], tid,
|
||||
be64_to_cpu(rhead->h_lsn));
|
||||
} else {
|
||||
ASSERT(dp + be32_to_cpu(ohead->oh_len) <= lp);
|
||||
if (dp + be32_to_cpu(ohead->oh_len) > lp) {
|
||||
xlog_warn(
|
||||
"XFS: xlog_recover_process_data: bad length");
|
||||
WARN_ON(1);
|
||||
return (XFS_ERROR(EIO));
|
||||
}
|
||||
flags = ohead->oh_flags & ~XLOG_END_TRANS;
|
||||
if (flags & XLOG_WAS_CONT_TRANS)
|
||||
flags &= ~XLOG_CONTINUE_TRANS;
|
||||
|
|
Loading…
Reference in a new issue