]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
dax/fsdev: fix uninitialized kaddr in fsdev_dax_zero_page_range()
authorJohn Groves <John@Groves.net>
Sun, 12 Apr 2026 15:50:06 +0000 (15:50 +0000)
committerIra Weiny <ira.weiny@intel.com>
Mon, 13 Apr 2026 19:15:15 +0000 (14:15 -0500)
__fsdev_dax_direct_access() returns -EFAULT without setting *kaddr when
dax_pgoff_to_phys() returns -1 (pgoff out of range). The return value
was ignored, leaving kaddr uninitialized before being passed to
fsdev_write_dax().

Check the return value and propagate the error.

Thanks to Dan Carpenter and the smatch project for reporting this.

Signed-off-by: John Groves <john@groves.net>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Link: https://patch.msgid.link/0100019d8262cda2-9714d31c-8fc1-4ca5-b32d-4df678240d14-000000@email.amazonses.com
Signed-off-by: Ira Weiny <ira.weiny@intel.com>
drivers/dax/fsdev.c

index 4499d9621f333bf744d7ce7ed2edde108ce1c1bf..188b2526bee455f48b9ac92eecfeec88e6761555 100644 (file)
@@ -80,9 +80,12 @@ static int fsdev_dax_zero_page_range(struct dax_device *dax_dev,
                        pgoff_t pgoff, size_t nr_pages)
 {
        void *kaddr;
+       long rc;
 
        WARN_ONCE(nr_pages > 1, "%s: nr_pages > 1\n", __func__);
-       __fsdev_dax_direct_access(dax_dev, pgoff, 1, DAX_ACCESS, &kaddr, NULL);
+       rc = __fsdev_dax_direct_access(dax_dev, pgoff, 1, DAX_ACCESS, &kaddr, NULL);
+       if (rc < 0)
+               return rc;
        fsdev_write_dax(kaddr, ZERO_PAGE(0), 0, PAGE_SIZE);
        return 0;
 }