Re: [PATCH] drivers/md: fix potential memleak

From: Song Liu
Date: Sat Nov 20 2021 - 02:24:12 EST


On Tue, Nov 16, 2021 at 9:57 PM 赵军奎 <bernard@xxxxxxxx> wrote:
>
>
>
> -----邮件原件-----
> 发件人: bernard@xxxxxxxx <bernard@xxxxxxxx> 代表 Song Liu
> 发送时间: 2021年11月17日 15:06
> 收件人: 赵军奎 <bernard@xxxxxxxx>
> 抄送: linux-raid <linux-raid@xxxxxxxxxxxxxxx>; open list <linux-kernel@xxxxxxxxxxxxxxx>
> 主题: Re: [PATCH] drivers/md: fix potential memleak
>
> On Sun, Nov 14, 2021 at 7:18 PM Bernard Zhao <bernard@xxxxxxxx> wrote:
> >
> > In function get_bitmap_from_slot, when md_bitmap_create failed,
> > md_bitmap_destroy must be called to do clean up.
>
> >Could you please explain which variable(s) need clean up?
>
> Hi Song:
> The follow is the function md_bitmap_create`s annotation :
> /*
> * initialize the bitmap structure
> * if this returns an error, bitmap_destroy must be called to do clean up
> * once mddev->bitmap is set
> */
> struct bitmap *md_bitmap_create(struct mddev *mddev, int slot)
>
> It is mentioned that bitmap_destroy needs to be called to do clean up.
> Other functions which called md_bitmap_create in the same file also called md_bitmap_create to clean up(in the error branch), but this one didn`t.
> I am not sure if there is some gap?

I don't think we need to call md_bitmap_destroy in some of these cases.
Please read the code carefully can decide where these are needed based
on the logic of the code.

Thanks,
Song