dm zoned: fix uninitialized pointer dereference
authorDamien Le Moal <damien.lemoal@wdc.com>
Mon, 8 Jun 2020 04:20:59 +0000 (13:20 +0900)
committerMike Snitzer <snitzer@redhat.com>
Wed, 17 Jun 2020 16:13:08 +0000 (12:13 -0400)
Make sure that the local variable rzone in dmz_do_reclaim() is always
initialized before being used for printing debug messages.

Fixes: f97809aec589 ("dm zoned: per-device reclaim")
Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-zoned-reclaim.c

index 2261b4d..dd1eebf 100644 (file)
@@ -377,6 +377,7 @@ static int dmz_do_reclaim(struct dmz_reclaim *zrc)
                        dmz_metadata_label(zmd), zrc->dev_idx);
                return -EBUSY;
        }
+       rzone = dzone;
 
        start = jiffies;
        if (dmz_is_cache(dzone) || dmz_is_rnd(dzone)) {
@@ -391,8 +392,6 @@ static int dmz_do_reclaim(struct dmz_reclaim *zrc)
                         */
                        ret = dmz_reclaim_rnd_data(zrc, dzone);
                }
-               rzone = dzone;
-
        } else {
                struct dm_zone *bzone = dzone->bzone;
                sector_t chunk_block = 0;
@@ -415,7 +414,6 @@ static int dmz_do_reclaim(struct dmz_reclaim *zrc)
                         * be later reclaimed.
                         */
                        ret = dmz_reclaim_seq_data(zrc, dzone);
-                       rzone = dzone;
                }
        }
 out: