Skip to contentSkip to conversation

OneNAND: Fix test of unsigned in onenand_otp_walk()

PATCH In review Roel Kluin 2 participants 2 messages Dec 16, 2009 Memory technology devices (MTD)

lore
Share & tools
lore

Roel Kluin

author
#0 lore raw

PATCH 1/1 OneNAND: Fix test of unsigned in onenand_otp_walk()

mtd->writesize and len are unsigned so the test does not work.

---
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;
}
drivers/mtd/onenand/onenand_base.c +1 -1
index ff66e43..cbe2711 100644
@@ -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);
Acked-by on v1 1/1
#1 lore raw
Quoted 43 lines

-----Original Message-----
From: Roel Kluin [mailto:[email protected]]
Sent: Wednesday, December 16, 2009 9:37 AM
To: Kyungmin Park; [email protected]; 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.

---
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;
}
drivers/mtd/onenand/onenand_base.c +1 -1
index ff66e43..cbe2711 100644
@@ -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);