mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-05 01:54:09 +08:00
[MTD] slram: Handle negative devlength correctly
A negative devlength won't get noticed and clean up: Signed-off-by: Roel Kluin <roel.kluin@gmail.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
This commit is contained in:
parent
5f877607cd
commit
3afd522de8
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user