aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/raid0.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md/raid0.c')
-rw-r--r--drivers/md/raid0.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c
index 01dfca94b663..a13f738a7b39 100644
--- a/drivers/md/raid0.c
+++ b/drivers/md/raid0.c
@@ -415,7 +415,7 @@ static sector_t raid0_size(struct mddev *mddev, sector_t sectors, int raid_disks
415 return array_sectors; 415 return array_sectors;
416} 416}
417 417
418static int raid0_stop(struct mddev *mddev); 418static void raid0_free(struct mddev *mddev, void *priv);
419 419
420static int raid0_run(struct mddev *mddev) 420static int raid0_run(struct mddev *mddev)
421{ 421{
@@ -468,20 +468,18 @@ static int raid0_run(struct mddev *mddev)
468 468
469 ret = md_integrity_register(mddev); 469 ret = md_integrity_register(mddev);
470 if (ret) 470 if (ret)
471 raid0_stop(mddev); 471 raid0_free(mddev, conf);
472 472
473 return ret; 473 return ret;
474} 474}
475 475
476static int raid0_stop(struct mddev *mddev) 476static void raid0_free(struct mddev *mddev, void *priv)
477{ 477{
478 struct r0conf *conf = mddev->private; 478 struct r0conf *conf = priv;
479 479
480 kfree(conf->strip_zone); 480 kfree(conf->strip_zone);
481 kfree(conf->devlist); 481 kfree(conf->devlist);
482 kfree(conf); 482 kfree(conf);
483 mddev->private = NULL;
484 return 0;
485} 483}
486 484
487/* 485/*
@@ -715,7 +713,7 @@ static struct md_personality raid0_personality=
715 .owner = THIS_MODULE, 713 .owner = THIS_MODULE,
716 .make_request = raid0_make_request, 714 .make_request = raid0_make_request,
717 .run = raid0_run, 715 .run = raid0_run,
718 .stop = raid0_stop, 716 .free = raid0_free,
719 .status = raid0_status, 717 .status = raid0_status,
720 .size = raid0_size, 718 .size = raid0_size,
721 .takeover = raid0_takeover, 719 .takeover = raid0_takeover,