mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 12:17:12 +09:00
xfs: dquot recovery does not validate the recovered dquot
[ Upstream commit 9c235dfc3d3f901fe22acb20f2ab37ff39f2ce02 ] When we're recovering ondisk quota records from the log, we need to validate the recovered buffer contents before writing them to disk. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Chandan Babu R <chandanbabu@kernel.org> Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
df716416db
commit
7880b1f0ad
@@ -19,6 +19,7 @@
|
|||||||
#include "xfs_log.h"
|
#include "xfs_log.h"
|
||||||
#include "xfs_log_priv.h"
|
#include "xfs_log_priv.h"
|
||||||
#include "xfs_log_recover.h"
|
#include "xfs_log_recover.h"
|
||||||
|
#include "xfs_error.h"
|
||||||
|
|
||||||
STATIC void
|
STATIC void
|
||||||
xlog_recover_dquot_ra_pass2(
|
xlog_recover_dquot_ra_pass2(
|
||||||
@@ -152,6 +153,19 @@ xlog_recover_dquot_commit_pass2(
|
|||||||
XFS_DQUOT_CRC_OFF);
|
XFS_DQUOT_CRC_OFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Validate the recovered dquot. */
|
||||||
|
fa = xfs_dqblk_verify(log->l_mp, dqb, dq_f->qlf_id);
|
||||||
|
if (fa) {
|
||||||
|
XFS_CORRUPTION_ERROR("Bad dquot after recovery",
|
||||||
|
XFS_ERRLEVEL_LOW, mp, dqb,
|
||||||
|
sizeof(struct xfs_dqblk));
|
||||||
|
xfs_alert(mp,
|
||||||
|
"Metadata corruption detected at %pS, dquot 0x%x",
|
||||||
|
fa, dq_f->qlf_id);
|
||||||
|
error = -EFSCORRUPTED;
|
||||||
|
goto out_release;
|
||||||
|
}
|
||||||
|
|
||||||
ASSERT(dq_f->qlf_size == 2);
|
ASSERT(dq_f->qlf_size == 2);
|
||||||
ASSERT(bp->b_mount == mp);
|
ASSERT(bp->b_mount == mp);
|
||||||
bp->b_flags |= _XBF_LOGRECOVERY;
|
bp->b_flags |= _XBF_LOGRECOVERY;
|
||||||
|
|||||||
Reference in New Issue
Block a user