xfs: don't clobber inobt/finobt cursors when xref with rmap

Even if we can't use the inobt/finobt cursors to count the number of
inode btree blocks, we are never allowed to clobber the cursor of the
btree being checked, so don't do this.  Found by fuzzing level = ones
in xfs/364.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
Darrick J. Wong 2018-01-23 11:17:47 -08:00
Родитель 70c57dcd60
Коммит c47b74fb2d
1 изменённых файлов: 2 добавлений и 2 удалений

Просмотреть файл

@ -391,12 +391,12 @@ xfs_scrub_iallocbt_xref_rmap_btreeblks(
/* Check that we saw as many inobt blocks as the rmap says. */
error = xfs_btree_count_blocks(sc->sa.ino_cur, &inobt_blocks);
if (!xfs_scrub_should_check_xref(sc, &error, &sc->sa.ino_cur))
if (!xfs_scrub_process_error(sc, 0, 0, &error))
return;
if (sc->sa.fino_cur) {
error = xfs_btree_count_blocks(sc->sa.fino_cur, &finobt_blocks);
if (!xfs_scrub_should_check_xref(sc, &error, &sc->sa.fino_cur))
if (!xfs_scrub_process_error(sc, 0, 0, &error))
return;
}