From 0ecce88b89a4eae84197109ac513155ba0115c29 Mon Sep 17 00:00:00 2001 From: Roel Kluin Date: Fri, 18 Sep 2009 12:51:49 -0700 Subject: [PATCH] --- yaml --- r: 165463 b: refs/heads/master c: 4c1e6b2ce13b154a4a69cee220c98976f4b784df h: refs/heads/master i: 165461: 800368034b891c5b8ca2fc6b72c5f2f97d19e55d 165459: e78037cdd7a212bb4545c2bb499030861a2d440e 165455: a3b6d1bff1cb2e9e409b5bc0c7545c7db7295baf v: v3 --- [refs] | 2 +- trunk/drivers/mtd/devices/lart.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 27a664a40889..1b614af957a9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f12a9473283e68ae708e9ada37cb352ea2652397 +refs/heads/master: 4c1e6b2ce13b154a4a69cee220c98976f4b784df diff --git a/trunk/drivers/mtd/devices/lart.c b/trunk/drivers/mtd/devices/lart.c index 578de1c67bfe..f4359fe7150f 100644 --- a/trunk/drivers/mtd/devices/lart.c +++ b/trunk/drivers/mtd/devices/lart.c @@ -393,7 +393,8 @@ static int flash_erase (struct mtd_info *mtd,struct erase_info *instr) * erase range is aligned with the erase size which is in * effect here. */ - if (instr->addr & (mtd->eraseregions[i].erasesize - 1)) return (-EINVAL); + if (i < 0 || (instr->addr & (mtd->eraseregions[i].erasesize - 1))) + return -EINVAL; /* Remember the erase region we start on */ first = i; @@ -409,7 +410,8 @@ static int flash_erase (struct mtd_info *mtd,struct erase_info *instr) i--; /* is the end aligned on a block boundary? */ - if ((instr->addr + instr->len) & (mtd->eraseregions[i].erasesize - 1)) return (-EINVAL); + if (i < 0 || ((instr->addr + instr->len) & (mtd->eraseregions[i].erasesize - 1))) + return -EINVAL; addr = instr->addr; len = instr->len;