fixup! mtd: nand: allocate aligned buffers if NAND_OWN_BUFFERS is unset

Message ID 1491548798-28051-1-git-send-email-yamada.masahiro@socionext.com
State New
Headers show

Commit Message

Masahiro Yamada April 7, 2017, 7:06 a.m.
---

Bug port: http://patchwork.ozlabs.org/patch/745136/
Please squash into commit f6614d1b.
(Currently, only once patch on top of that.)
If impossible, I can re-send this with detailed log.


 drivers/mtd/nand/nand_base.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.7.4


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

Comments

Boris Brezillon April 9, 2017, 7:09 a.m. | #1
On Fri,  7 Apr 2017 16:06:38 +0900
Masahiro Yamada <yamada.masahiro@socionext.com> wrote:

> ---

> 

> Bug port: http://patchwork.ozlabs.org/patch/745136/

> Please squash into commit f6614d1b.

> (Currently, only once patch on top of that.)

> If impossible, I can re-send this with detailed log.

> 

> 

>  drivers/mtd/nand/nand_base.c | 2 +-

>  1 file changed, 1 insertion(+), 1 deletion(-)

> 

> diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c

> index 8a2e5ff..903a678 100644

> --- a/drivers/mtd/nand/nand_base.c

> +++ b/drivers/mtd/nand/nand_base.c

> @@ -4936,7 +4936,7 @@ void nand_cleanup(struct nand_chip *chip)

>  

>  	/* Free bad block table memory */

>  	kfree(chip->bbt);

> -	if (!(chip->options & NAND_OWN_BUFFERS)) {

> +	if (!(chip->options & NAND_OWN_BUFFERS) && !chip->buffers) {


You mean

	if (!(chip->options & NAND_OWN_BUFFERS) && chip->buffers) {

right?

I'll squash this change in you initial commit, but I have a comment on
where the real bug lies IMO (see my reply to "mtd: nand: allocate
aligned buffers if NAND_OWN_BUFFERS is unset").

>  		kfree(chip->buffers->databuf);

>  		kfree(chip->buffers->ecccode);

>  		kfree(chip->buffers->ecccalc);



______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
Masahiro Yamada April 10, 2017, 12:21 a.m. | #2
Hi Boris,


> -----Original Message-----

> From: Boris Brezillon [mailto:boris.brezillon@free-electrons.com]

> Sent: Sunday, April 09, 2017 4:10 PM

> To: Yamada, Masahiro/山田 真弘 <yamada.masahiro@socionext.com>

> Cc: linux-mtd@lists.infradead.org; Leonard Crestez

> <leonard.crestez@nxp.com>

> Subject: Re: [PATCH] fixup! mtd: nand: allocate aligned buffers if

> NAND_OWN_BUFFERS is unset

> 

> On Fri,  7 Apr 2017 16:06:38 +0900

> Masahiro Yamada <yamada.masahiro@socionext.com> wrote:

> 

> > ---

> >

> > Bug port: http://patchwork.ozlabs.org/patch/745136/

> > Please squash into commit f6614d1b.

> > (Currently, only once patch on top of that.)

> > If impossible, I can re-send this with detailed log.

> >

> >

> >  drivers/mtd/nand/nand_base.c | 2 +-

> >  1 file changed, 1 insertion(+), 1 deletion(-)

> >

> > diff --git a/drivers/mtd/nand/nand_base.c

> b/drivers/mtd/nand/nand_base.c

> > index 8a2e5ff..903a678 100644

> > --- a/drivers/mtd/nand/nand_base.c

> > +++ b/drivers/mtd/nand/nand_base.c

> > @@ -4936,7 +4936,7 @@ void nand_cleanup(struct nand_chip *chip)

> >

> >  	/* Free bad block table memory */

> >  	kfree(chip->bbt);

> > -	if (!(chip->options & NAND_OWN_BUFFERS)) {

> > +	if (!(chip->options & NAND_OWN_BUFFERS) && !chip->buffers) {

> 

> You mean

> 

> 	if (!(chip->options & NAND_OWN_BUFFERS) && chip->buffers) {

> 

> right?


Right.



> I'll squash this change in you initial commit, but I have a comment on

> where the real bug lies IMO (see my reply to "mtd: nand: allocate

> aligned buffers if NAND_OWN_BUFFERS is unset").



Yours is correct.  Thanks!


Masahiro

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

Patch hide | download patch | download mbox

diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index 8a2e5ff..903a678 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -4936,7 +4936,7 @@  void nand_cleanup(struct nand_chip *chip)
 
 	/* Free bad block table memory */
 	kfree(chip->bbt);
-	if (!(chip->options & NAND_OWN_BUFFERS)) {
+	if (!(chip->options & NAND_OWN_BUFFERS) && !chip->buffers) {
 		kfree(chip->buffers->databuf);
 		kfree(chip->buffers->ecccode);
 		kfree(chip->buffers->ecccalc);