On Wed, Dec 8, 2021 at 9:55 PM Xiao Ni <xni@xxxxxxxxxx> wrote: > > It doesn't free memory when register integrity failed. And move > free conf codes into a single function. > > Signed-off-by: Xiao Ni <xni@xxxxxxxxxx> > --- > drivers/md/raid0.c | 18 +++++++++++++++--- > 1 file changed, 15 insertions(+), 3 deletions(-) > > diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c > index 62c8b6adac70..3fa47df1c60e 100644 > --- a/drivers/md/raid0.c > +++ b/drivers/md/raid0.c > @@ -356,6 +356,7 @@ static sector_t raid0_size(struct mddev *mddev, sector_t sectors, int raid_disks > return array_sectors; > } > > +static void free_conf(struct r0conf *conf); > static void raid0_free(struct mddev *mddev, void *priv); > > static int raid0_run(struct mddev *mddev) > @@ -413,19 +414,30 @@ static int raid0_run(struct mddev *mddev) > dump_zones(mddev); > > ret = md_integrity_register(mddev); > + if (ret) > + goto free; > > return ret; > + > +free: > + free_conf(conf); Can we just use raid0_free() here? Also, after freeing conf, we should set mddev->private to NULL. Thanks, Song