xfs: add inode magic to inode verifier
Use xfs_verify_magic to check the magic numbers of inodes. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Brian Foster <bfoster@redhat.com>
This commit is contained in:
@@ -97,7 +97,7 @@ xfs_inode_buf_verify(
|
|||||||
|
|
||||||
dip = xfs_buf_offset(bp, (i << mp->m_sb.sb_inodelog));
|
dip = xfs_buf_offset(bp, (i << mp->m_sb.sb_inodelog));
|
||||||
unlinked_ino = be32_to_cpu(dip->di_next_unlinked);
|
unlinked_ino = be32_to_cpu(dip->di_next_unlinked);
|
||||||
di_ok = dip->di_magic == cpu_to_be16(XFS_DINODE_MAGIC) &&
|
di_ok = xfs_verify_magic(bp, dip->di_magic) &&
|
||||||
xfs_dinode_good_version(mp, dip->di_version) &&
|
xfs_dinode_good_version(mp, dip->di_version) &&
|
||||||
xfs_verify_agino_or_null(mp, agno, unlinked_ino);
|
xfs_verify_agino_or_null(mp, agno, unlinked_ino);
|
||||||
if (unlikely(XFS_TEST_ERROR(!di_ok, mp,
|
if (unlikely(XFS_TEST_ERROR(!di_ok, mp,
|
||||||
@@ -146,12 +146,16 @@ xfs_inode_buf_write_verify(
|
|||||||
|
|
||||||
const struct xfs_buf_ops xfs_inode_buf_ops = {
|
const struct xfs_buf_ops xfs_inode_buf_ops = {
|
||||||
.name = "xfs_inode",
|
.name = "xfs_inode",
|
||||||
|
.magic = { cpu_to_be16(XFS_DINODE_MAGIC),
|
||||||
|
cpu_to_be16(XFS_DINODE_MAGIC) },
|
||||||
.verify_read = xfs_inode_buf_read_verify,
|
.verify_read = xfs_inode_buf_read_verify,
|
||||||
.verify_write = xfs_inode_buf_write_verify,
|
.verify_write = xfs_inode_buf_write_verify,
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct xfs_buf_ops xfs_inode_buf_ra_ops = {
|
const struct xfs_buf_ops xfs_inode_buf_ra_ops = {
|
||||||
.name = "xfs_inode_ra",
|
.name = "xfs_inode_ra",
|
||||||
|
.magic = { cpu_to_be16(XFS_DINODE_MAGIC),
|
||||||
|
cpu_to_be16(XFS_DINODE_MAGIC) },
|
||||||
.verify_read = xfs_inode_buf_readahead_verify,
|
.verify_read = xfs_inode_buf_readahead_verify,
|
||||||
.verify_write = xfs_inode_buf_write_verify,
|
.verify_write = xfs_inode_buf_write_verify,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3049,7 +3049,7 @@ xlog_recover_inode_pass2(
|
|||||||
* Make sure the place we're flushing out to really looks
|
* Make sure the place we're flushing out to really looks
|
||||||
* like an inode!
|
* like an inode!
|
||||||
*/
|
*/
|
||||||
if (unlikely(dip->di_magic != cpu_to_be16(XFS_DINODE_MAGIC))) {
|
if (unlikely(!xfs_verify_magic(bp, dip->di_magic))) {
|
||||||
xfs_alert(mp,
|
xfs_alert(mp,
|
||||||
"%s: Bad inode magic number, dip = "PTR_FMT", dino bp = "PTR_FMT", ino = %Ld",
|
"%s: Bad inode magic number, dip = "PTR_FMT", dino bp = "PTR_FMT", ino = %Ld",
|
||||||
__func__, dip, bp, in_f->ilf_ino);
|
__func__, dip, bp, in_f->ilf_ino);
|
||||||
|
|||||||
Reference in New Issue
Block a user