]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/xfs/xfs_log_recover.c
xfs: verify superblocks as they are read from disk
[karo-tx-linux.git] / fs / xfs / xfs_log_recover.c
index eb1e29ff0c7c4a6a31c7dec180f271418a61f989..924a4bc3d49a2f186de13c8171fc25d015e88aa0 100644 (file)
@@ -3692,13 +3692,14 @@ xlog_do_recover(
 
        /*
         * Now that we've finished replaying all buffer and inode
-        * updates, re-read in the superblock.
+        * updates, re-read in the superblock and reverify it.
         */
        bp = xfs_getsb(log->l_mp, 0);
        XFS_BUF_UNDONE(bp);
        ASSERT(!(XFS_BUF_ISWRITE(bp)));
        XFS_BUF_READ(bp);
        XFS_BUF_UNASYNC(bp);
+       bp->b_iodone = xfs_sb_read_verify;
        xfsbdstrat(log->l_mp, bp);
        error = xfs_buf_iowait(bp);
        if (error) {
@@ -3710,7 +3711,7 @@ xlog_do_recover(
 
        /* Convert superblock from on-disk format */
        sbp = &log->l_mp->m_sb;
-       xfs_sb_from_disk(log->l_mp, XFS_BUF_TO_SBP(bp));
+       xfs_sb_from_disk(sbp, XFS_BUF_TO_SBP(bp));
        ASSERT(sbp->sb_magicnum == XFS_SB_MAGIC);
        ASSERT(xfs_sb_good_version(sbp));
        xfs_buf_relse(bp);