Message ID | 20190925154302.17708-1-navid.emamdoost@gmail.com |
---|---|
State | Changes Requested |
Delegated to: | Miquel Raynal |
Headers | show |
Series | mtd: onenand: prevent memory leak in onenand_scan | expand |
> In onenand_scan if scan_bbt fails the allocated buffers should be released.
Will an other change description be more appropriate?
How do you think about to add the tag “Fixes” here?
Regards,
Markus
Would you please take a look at this patch? On Wed, Sep 25, 2019 at 10:43 AM Navid Emamdoost <navid.emamdoost@gmail.com> wrote: > > In onenand_scan if scan_bbt fails the allocated buffers should be > released. > > Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com> > --- > drivers/mtd/nand/onenand/onenand_base.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/mtd/nand/onenand/onenand_base.c b/drivers/mtd/nand/onenand/onenand_base.c > index 77bd32a683e1..79c01f42925a 100644 > --- a/drivers/mtd/nand/onenand/onenand_base.c > +++ b/drivers/mtd/nand/onenand/onenand_base.c > @@ -3977,8 +3977,11 @@ int onenand_scan(struct mtd_info *mtd, int maxchips) > this->badblockpos = ONENAND_BADBLOCK_POS; > > ret = this->scan_bbt(mtd); > - if ((!FLEXONENAND(this)) || ret) > + if ((!FLEXONENAND(this)) || ret) { > + kfree(this->page_buf); > + kfree(this->oob_buf); > return ret; > + } > > /* Change Flex-OneNAND boundaries if required */ > for (i = 0; i < MAX_DIES; i++) > -- > 2.17.1 >
Hi Navid, Navid Emamdoost <navid.emamdoost@gmail.com> wrote on Mon, 30 Sep 2019 16:37:17 -0500: > Would you please take a look at this patch? > > On Wed, Sep 25, 2019 at 10:43 AM Navid Emamdoost > <navid.emamdoost@gmail.com> wrote: > > > > In onenand_scan if scan_bbt fails the allocated buffers should be > > released. > > > > Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com> > > --- > > drivers/mtd/nand/onenand/onenand_base.c | 5 ++++- > > 1 file changed, 4 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/mtd/nand/onenand/onenand_base.c b/drivers/mtd/nand/onenand/onenand_base.c > > index 77bd32a683e1..79c01f42925a 100644 > > --- a/drivers/mtd/nand/onenand/onenand_base.c > > +++ b/drivers/mtd/nand/onenand/onenand_base.c > > @@ -3977,8 +3977,11 @@ int onenand_scan(struct mtd_info *mtd, int maxchips) > > this->badblockpos = ONENAND_BADBLOCK_POS; > > > > ret = this->scan_bbt(mtd); > > - if ((!FLEXONENAND(this)) || ret) > > + if ((!FLEXONENAND(this)) || ret) { > > + kfree(this->page_buf); Apparently you missed: #ifdef CONFIG_MTD_ONENAND_VERIFY_WRITE kfree(this->verify_buf); #endif > > + kfree(this->oob_buf); > > return ret; > > + } > > > > /* Change Flex-OneNAND boundaries if required */ > > for (i = 0; i < MAX_DIES; i++) > > -- > > 2.17.1 > > > > Thanks, Miquèl
Thanks Miquel for pointing that out. v2 was sent. Thank you, Navid. On Fri, Oct 4, 2019 at 10:57 AM Miquel Raynal <miquel.raynal@bootlin.com> wrote: > > Hi Navid, > > Navid Emamdoost <navid.emamdoost@gmail.com> wrote on Mon, 30 Sep 2019 > 16:37:17 -0500: > > > Would you please take a look at this patch? > > > > On Wed, Sep 25, 2019 at 10:43 AM Navid Emamdoost > > <navid.emamdoost@gmail.com> wrote: > > > > > > In onenand_scan if scan_bbt fails the allocated buffers should be > > > released. > > > > > > Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com> > > > --- > > > drivers/mtd/nand/onenand/onenand_base.c | 5 ++++- > > > 1 file changed, 4 insertions(+), 1 deletion(-) > > > > > > diff --git a/drivers/mtd/nand/onenand/onenand_base.c b/drivers/mtd/nand/onenand/onenand_base.c > > > index 77bd32a683e1..79c01f42925a 100644 > > > --- a/drivers/mtd/nand/onenand/onenand_base.c > > > +++ b/drivers/mtd/nand/onenand/onenand_base.c > > > @@ -3977,8 +3977,11 @@ int onenand_scan(struct mtd_info *mtd, int maxchips) > > > this->badblockpos = ONENAND_BADBLOCK_POS; > > > > > > ret = this->scan_bbt(mtd); > > > - if ((!FLEXONENAND(this)) || ret) > > > + if ((!FLEXONENAND(this)) || ret) { > > > + kfree(this->page_buf); > > Apparently you missed: > > #ifdef CONFIG_MTD_ONENAND_VERIFY_WRITE > kfree(this->verify_buf); > #endif > > > > + kfree(this->oob_buf); > > > return ret; > > > + } > > > > > > /* Change Flex-OneNAND boundaries if required */ > > > for (i = 0; i < MAX_DIES; i++) > > > -- > > > 2.17.1 > > > > > > > > > Thanks, > Miquèl
diff --git a/drivers/mtd/nand/onenand/onenand_base.c b/drivers/mtd/nand/onenand/onenand_base.c index 77bd32a683e1..79c01f42925a 100644 --- a/drivers/mtd/nand/onenand/onenand_base.c +++ b/drivers/mtd/nand/onenand/onenand_base.c @@ -3977,8 +3977,11 @@ int onenand_scan(struct mtd_info *mtd, int maxchips) this->badblockpos = ONENAND_BADBLOCK_POS; ret = this->scan_bbt(mtd); - if ((!FLEXONENAND(this)) || ret) + if ((!FLEXONENAND(this)) || ret) { + kfree(this->page_buf); + kfree(this->oob_buf); return ret; + } /* Change Flex-OneNAND boundaries if required */ for (i = 0; i < MAX_DIES; i++)
In onenand_scan if scan_bbt fails the allocated buffers should be released. Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com> --- drivers/mtd/nand/onenand/onenand_base.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)