]> git.dujemihanovic.xyz Git - linux.git/commitdiff
squashfs: squashfs_read_data need to check if the length is 0
authorLizhi Xu <lizhi.xu@windriver.com>
Thu, 16 Nov 2023 03:13:52 +0000 (11:13 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 7 Dec 2023 00:12:45 +0000 (16:12 -0800)
When the length passed in is 0, the pagemap_scan_test_walk() caller should
bail.  This error causes at least a WARN_ON().

Link: https://lkml.kernel.org/r/20231116031352.40853-1-lizhi.xu@windriver.com
Reported-by: syzbot+32d3767580a1ea339a81@syzkaller.appspotmail.com
Closes: https://lkml.kernel.org/r/0000000000000526f2060a30a085@google.com
Signed-off-by: Lizhi Xu <lizhi.xu@windriver.com>
Reviewed-by: Phillip Lougher <phillip@squashfs.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
fs/squashfs/block.c

index 581ce9519339018d005137caf72295aaeb16b797..2dc730800f448d8cb44f2d5c4e625e607d1faf2f 100644 (file)
@@ -321,7 +321,7 @@ int squashfs_read_data(struct super_block *sb, u64 index, int length,
                TRACE("Block @ 0x%llx, %scompressed size %d\n", index - 2,
                      compressed ? "" : "un", length);
        }
-       if (length < 0 || length > output->length ||
+       if (length <= 0 || length > output->length ||
                        (index + length) > msblk->bytes_used) {
                res = -EIO;
                goto out;