]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
dm era: fix error code propagation in era_ctr()
authorCao Guanghui <caoguanghui@kylinos.cn>
Wed, 17 Jun 2026 06:00:53 +0000 (14:00 +0800)
committerMikulas Patocka <mpatocka@redhat.com>
Wed, 8 Jul 2026 20:33:35 +0000 (22:33 +0200)
era_ctr() replaces the actual error codes returned by dm_get_device()
and dm_set_target_max_io_len() with hardcoded -EINVAL, discarding
the real reason for the failure (e.g. -ENODEV, -ENOMEM).  This makes
it harder for users to diagnose problems and is inconsistent with
other dm targets (dm-thin, dm-verity, dm-flakey, dm-ebs) which
propagate the original error.

Fix all three sites to return 'r' instead of -EINVAL.

Signed-off-by: Cao Guanghui <caoguanghui@kylinos.cn>
Reviewed-by: Su Yue <glass.su@suse.com>
Reviewed-by: Ming-Hung Tsai <mtsai@redhat.com>
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
drivers/md/dm-era-target.c

index cef2881948043492e7b3c1e0c4b7d00fa98c6cee..7fe4d19ade4f03ed753c0530f5b5b26e1c18a521 100644 (file)
@@ -1489,7 +1489,7 @@ static int era_ctr(struct dm_target *ti, unsigned int argc, char **argv)
        if (r) {
                ti->error = "Error opening metadata device";
                era_destroy(era);
-               return -EINVAL;
+               return r;
        }
 
        r = dm_get_device(ti, argv[1], BLK_OPEN_READ | BLK_OPEN_WRITE,
@@ -1497,7 +1497,7 @@ static int era_ctr(struct dm_target *ti, unsigned int argc, char **argv)
        if (r) {
                ti->error = "Error opening data device";
                era_destroy(era);
-               return -EINVAL;
+               return r;
        }
 
        r = sscanf(argv[2], "%u%c", &era->sectors_per_block, &dummy);
@@ -1511,7 +1511,7 @@ static int era_ctr(struct dm_target *ti, unsigned int argc, char **argv)
        if (r) {
                ti->error = "could not set max io len";
                era_destroy(era);
-               return -EINVAL;
+               return r;
        }
 
        if (!valid_block_size(era->sectors_per_block)) {