|
@@ -2455,12 +2455,15 @@ xfs_agf_verify(
|
|
|
be32_to_cpu(agf->agf_flcount) <= XFS_AGFL_SIZE(mp)))
|
|
|
return false;
|
|
|
|
|
|
- if (be32_to_cpu(agf->agf_levels[XFS_BTNUM_BNO]) > XFS_BTREE_MAXLEVELS ||
|
|
|
+ if (be32_to_cpu(agf->agf_levels[XFS_BTNUM_BNO]) < 1 ||
|
|
|
+ be32_to_cpu(agf->agf_levels[XFS_BTNUM_CNT]) < 1 ||
|
|
|
+ be32_to_cpu(agf->agf_levels[XFS_BTNUM_BNO]) > XFS_BTREE_MAXLEVELS ||
|
|
|
be32_to_cpu(agf->agf_levels[XFS_BTNUM_CNT]) > XFS_BTREE_MAXLEVELS)
|
|
|
return false;
|
|
|
|
|
|
if (xfs_sb_version_hasrmapbt(&mp->m_sb) &&
|
|
|
- be32_to_cpu(agf->agf_levels[XFS_BTNUM_RMAP]) > XFS_BTREE_MAXLEVELS)
|
|
|
+ (be32_to_cpu(agf->agf_levels[XFS_BTNUM_RMAP]) < 1 ||
|
|
|
+ be32_to_cpu(agf->agf_levels[XFS_BTNUM_RMAP]) > XFS_BTREE_MAXLEVELS))
|
|
|
return false;
|
|
|
|
|
|
/*
|
|
@@ -2477,7 +2480,8 @@ xfs_agf_verify(
|
|
|
return false;
|
|
|
|
|
|
if (xfs_sb_version_hasreflink(&mp->m_sb) &&
|
|
|
- be32_to_cpu(agf->agf_refcount_level) > XFS_BTREE_MAXLEVELS)
|
|
|
+ (be32_to_cpu(agf->agf_refcount_level) < 1 ||
|
|
|
+ be32_to_cpu(agf->agf_refcount_level) > XFS_BTREE_MAXLEVELS))
|
|
|
return false;
|
|
|
|
|
|
return true;;
|