[U-Boot] [PATCH] mtd: pxa3xx_nand: Correct allocation and init bug

Scott Wood scottwood at freescale.com
Fri Oct 23 23:14:21 CEST 2015


On Fri, 2015-10-23 at 20:57 +0000, Kevin Smith wrote:
> On 10/23/2015 03:34 PM, Scott Wood wrote:
> > Does Linux have this problem?  Assuming no, please fix this by making the
> > driver look more like Linux.  At least then it would be the same ugliness.
> There are 2 problems and one improvement:
> 1) Invalid dereference.  This is U-Boot-only code not taken from Linux.  
> Removed.
> 2) Bad pointer math.  This is different from Linux, and I have fixed it 
> by making it more like Linux.

It still doesn't look very much like Linux.  Linux has:
                mtd = (void *)&info[1] + (sizeof(*mtd) + sizeof(*host)) * cs;
                chip = (struct nand_chip *)(&mtd[1]);

> 3) Unnecessary memory allocation.  I just noticed this while 
> investigating my crashes caused by the other two issues.
> 
> > Can you explain how the change in the calculation of "chip" and the
> > allocation size is relevant to the NULL dereference?  Couldn't that be 
> > fixed
> > by just removing the "info->host[0]->mtd" line?
> It's not, they are two separate bugs that crash when I try to load from 
> NAND.  Perhaps I should submit a patch series for this?

The allocation size issue causes a crash, not just wasted memory?

-Scott



More information about the U-Boot mailing list