[MTD] slram: Handle negative devlength correctly
Linux-MTD Mailing List
linux-mtd at lists.infradead.org
Sun Jan 18 20:59:01 EST 2009
Gitweb: http://git.infradead.org/?p=mtd-2.6.git;a=commit;h=3afd522de8d8ec446efe957b86e4f63e3dd8ce9d
Commit: 3afd522de8d8ec446efe957b86e4f63e3dd8ce9d
Parent: 5f877607cdfe8b60bf96fb96e527e0ce2a21e68b
Author: Roel Kluin <roel.kluin at gmail.com>
AuthorDate: Mon Jan 19 00:15:13 2009 +0100
Committer: David Woodhouse <David.Woodhouse at intel.com>
CommitDate: Mon Jan 19 12:24:21 2009 +1100
[MTD] slram: Handle negative devlength correctly
A negative devlength won't get noticed and clean up:
Signed-off-by: Roel Kluin <roel.kluin at gmail.com>
Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
---
drivers/mtd/devices/slram.c | 14 ++++++++++----
1 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/drivers/mtd/devices/slram.c b/drivers/mtd/devices/slram.c
index a425d09..00248e8 100644
--- a/drivers/mtd/devices/slram.c
+++ b/drivers/mtd/devices/slram.c
@@ -267,22 +267,28 @@ static int parse_cmdline(char *devname, char *szstart, char *szlength)
if (*(szlength) != '+') {
devlength = simple_strtoul(szlength, &buffer, 0);
devlength = handle_unit(devlength, buffer) - devstart;
+ if (devlength < devstart)
+ goto err_out;
+
+ devlength -= devstart;
} else {
devlength = simple_strtoul(szlength + 1, &buffer, 0);
devlength = handle_unit(devlength, buffer);
}
T("slram: devname=%s, devstart=0x%lx, devlength=0x%lx\n",
devname, devstart, devlength);
- if ((devstart < 0) || (devlength < 0) || (devlength % SLRAM_BLK_SZ != 0)) {
- E("slram: Illegal start / length parameter.\n");
- return(-EINVAL);
- }
+ if (devlength % SLRAM_BLK_SZ != 0)
+ goto err_out;
if ((devstart = register_device(devname, devstart, devlength))){
unregister_devices();
return((int)devstart);
}
return(0);
+
+err_out:
+ E("slram: Illegal length parameter.\n");
+ return(-EINVAL);
}
#ifndef MODULE
More information about the linux-mtd-cvs
mailing list