Skip to content

Commit 35f20ac

Browse files
Christoph Hellwigliu-song-6
authored andcommitted
md/raid0: don't free conf on raid0_run failure
The core md code calls the ->free method which already frees conf. Fixes: 0c031fd ("md: Move alloc/free acct bioset in to personality") Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: Yu Kuai <[email protected]> Signed-off-by: Song Liu <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent acc6680 commit 35f20ac

File tree

1 file changed

+5
-16
lines changed

1 file changed

+5
-16
lines changed

drivers/md/raid0.c

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -365,18 +365,13 @@ static sector_t raid0_size(struct mddev *mddev, sector_t sectors, int raid_disks
365365
return array_sectors;
366366
}
367367

368-
static void free_conf(struct mddev *mddev, struct r0conf *conf)
369-
{
370-
kfree(conf->strip_zone);
371-
kfree(conf->devlist);
372-
kfree(conf);
373-
}
374-
375368
static void raid0_free(struct mddev *mddev, void *priv)
376369
{
377370
struct r0conf *conf = priv;
378371

379-
free_conf(mddev, conf);
372+
kfree(conf->strip_zone);
373+
kfree(conf->devlist);
374+
kfree(conf);
380375
}
381376

382377
static int raid0_set_limits(struct mddev *mddev)
@@ -415,7 +410,7 @@ static int raid0_run(struct mddev *mddev)
415410
if (!mddev_is_dm(mddev)) {
416411
ret = raid0_set_limits(mddev);
417412
if (ret)
418-
goto out_free_conf;
413+
return ret;
419414
}
420415

421416
/* calculate array device size */
@@ -427,13 +422,7 @@ static int raid0_run(struct mddev *mddev)
427422

428423
dump_zones(mddev);
429424

430-
ret = md_integrity_register(mddev);
431-
if (ret)
432-
goto out_free_conf;
433-
return 0;
434-
out_free_conf:
435-
free_conf(mddev, conf);
436-
return ret;
425+
return md_integrity_register(mddev);
437426
}
438427

439428
/*

0 commit comments

Comments
 (0)