]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs_repair: release corrupt directory node buffer
authorDarrick J. Wong <darrick.wong@oracle.com>
Mon, 7 Sep 2015 00:13:41 +0000 (10:13 +1000)
committerDave Chinner <david@fromorbit.com>
Mon, 7 Sep 2015 00:13:41 +0000 (10:13 +1000)
If repair encounters a dir node block that fails checksum or
verification, free the buffer before the directory gets rebuilt.

Reported-by: Eric Sandeen <sandeen@sandeen.net>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
repair/dir2.c

index a5646f88477a474a5eaa9a92b7e5667d54522b41..54c49ebae67591dc8bde0b9fa09b2ec3e2ef03fc 100644 (file)
@@ -200,6 +200,7 @@ _("bad dir magic number 0x%x in inode %" PRIu64 " bno = %u\n"),
                }
                /* corrupt node; rebuild the dir. */
                if (bp->b_error == -EFSBADCRC || bp->b_error == -EFSCORRUPTED) {
+                       libxfs_putbuf(bp);
                        do_warn(
 _("corrupt tree block %u for directory inode %" PRIu64 "\n"),
                                bno, da_cursor->ino);