ext4: correct error value of function verifying dx checksum
authorDaeho Jeong <daeho.jeong@samsung.com>
Mon, 4 Jul 2016 01:11:08 +0000 (21:11 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 4 Jul 2016 01:11:08 +0000 (21:11 -0400)
ext4_dx_csum_verify() returns the success return value in two checksum
verification failure cases. We need to set the return values to zero
as failure like ext4_dirent_csum_verify() returning zero when failing
to find a checksum dirent at the tail.

Signed-off-by: Daeho Jeong <daeho.jeong@samsung.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/ext4/namei.c

index 5bb46b6ed456c190be0892186a2e8b8f4967222b..94d22e78a7dd862fb3267dd196d11b7325423396 100644 (file)
@@ -445,14 +445,14 @@ static int ext4_dx_csum_verify(struct inode *inode,
        c = get_dx_countlimit(inode, dirent, &count_offset);
        if (!c) {
                EXT4_ERROR_INODE(inode, "dir seems corrupt?  Run e2fsck -D.");
-               return 1;
+               return 0;
        }
        limit = le16_to_cpu(c->limit);
        count = le16_to_cpu(c->count);
        if (count_offset + (limit * sizeof(struct dx_entry)) >
            EXT4_BLOCK_SIZE(inode->i_sb) - sizeof(struct dx_tail)) {
                warn_no_space_for_csum(inode);
-               return 1;
+               return 0;
        }
        t = (struct dx_tail *)(((struct dx_entry *)c) + limit);