From patchwork Wed Dec 16 00:37:17 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: OneNAND: Fix test of unsigned in onenand_otp_walk() Date: Tue, 15 Dec 2009 14:37:17 -0000 From: roel kluin X-Patchwork-Id: 41227 Message-Id: <4B282BBD.4050106@gmail.com> To: Kyungmin Park , linux-mtd@lists.infradead.org, Andrew Morton , LKML mtd->writesize and len are unsigned so the test does not work. Signed-off-by: Roel Kluin Acked-by: Kyungmin Park --- you can test this with: #include 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);