dm-flakey would error all IOs if num_features was 0, but if it was
absent, dm-flakey would never error any IO. Fix this so that no
num_features works the same as num_features set to 0.

Fixes: aa7d7bc99fed7 ("dm flakey: add an "error_reads" option")
Reported-by: Kent Overstreet <kent.overstr...@linux.dev>
Signed-off-by: Benjamin Marzinski <bmarz...@redhat.com>
---
 drivers/md/dm-flakey.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/md/dm-flakey.c b/drivers/md/dm-flakey.c
index f5f8d25d1b2d..35f1708b62e8 100644
--- a/drivers/md/dm-flakey.c
+++ b/drivers/md/dm-flakey.c
@@ -53,8 +53,8 @@ struct per_bio_data {
 static int parse_features(struct dm_arg_set *as, struct flakey_c *fc,
                          struct dm_target *ti)
 {
-       int r;
-       unsigned int argc;
+       int r = 0;
+       unsigned int argc = 0;
        const char *arg_name;
 
        static const struct dm_arg _args[] = {
@@ -65,14 +65,13 @@ static int parse_features(struct dm_arg_set *as, struct 
flakey_c *fc,
                {0, PROBABILITY_BASE, "Invalid random corrupt argument"},
        };
 
-       /* No feature arguments supplied. */
-       if (!as->argc)
-               return 0;
-
-       r = dm_read_arg_group(_args, as, &argc, &ti->error);
-       if (r)
+       if (as->argc && (r = dm_read_arg_group(_args, as, &argc, &ti->error)))
                return r;
 
+       /* No feature arguments supplied. */
+       if (!argc)
+               goto error_all_io;
+
        while (argc) {
                arg_name = dm_shift_arg(as);
                argc--;
@@ -232,6 +231,7 @@ static int parse_features(struct dm_arg_set *as, struct 
flakey_c *fc,
        if (!fc->corrupt_bio_byte && !test_bit(ERROR_READS, &fc->flags) &&
            !test_bit(DROP_WRITES, &fc->flags) && !test_bit(ERROR_WRITES, 
&fc->flags) &&
            !fc->random_read_corrupt && !fc->random_write_corrupt) {
+error_all_io:
                set_bit(ERROR_WRITES, &fc->flags);
                set_bit(ERROR_READS, &fc->flags);
        }
-- 
2.48.1


Reply via email to