[PATCH] OneNAND: Fix test of unsigned in onenand_otp_walk()

Kyungmin Park kyungmin.park at samsung.com
Tue Dec 15 20:20:30 EST 2009


Acked-by: Kyungmin Park <kyungmin.park at samsung.com>

> -----Original Message-----
> From: Roel Kluin [mailto:roel.kluin at gmail.com]
> Sent: Wednesday, December 16, 2009 9:37 AM
> To: Kyungmin Park; linux-mtd at lists.infradead.org; Andrew Morton; LKML
> Subject: [PATCH] OneNAND: Fix test of unsigned in onenand_otp_walk()
> 
> mtd->writesize and len are unsigned so the test does not work.
> 
> Signed-off-by: Roel Kluin <roel.kluin at gmail.com>
> ---
> you can test this with:
> 
> #include <stdio.h>
> 
> int main()
> {
>         int c = 1, d = 1;
>         unsigned a = 30;
>         unsigned b = 10;
> 
>         if ((b * c) - (d + a) < 0)
>                 printf("good\n");
>         else
>                 printf("bad\n");
>         return 0;
> }
> 
> 
> diff --git a/drivers/mtd/onenand/onenand_base.c
> b/drivers/mtd/onenand/onenand_base.c
> index ff66e43..cbe2711 100644
> --- a/drivers/mtd/onenand/onenand_base.c
> +++ b/drivers/mtd/onenand/onenand_base.c
> @@ -2725,7 +2725,7 @@ static int onenand_otp_walk(struct mtd_info *mtd,
> loff_t from, size_t len,
>  	}
> 
>  	/* Check User/Factory boundary */
> -	if (((mtd->writesize * otp_pages) - (from + len)) < 0)
> +	if (mtd->writesize * otp_pages < from + len)
>  		return 0;
> 
>  	onenand_get_device(mtd, FL_OTPING);




More information about the linux-mtd mailing list