mtd: check parts pointer before using it
The code has the check for parts but it called after kmemdup, kmemdup(parts, sizeof(*parts) * nr_parts,...) if (!parts) return -ENOMEM In fact, we need check parts before safely using it. and we also need check the real_parts to make sure kmemdup allocation sucessfully. Signed-off-by: Jason Liu <jason.hui@linaro.org> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@intel.com>
This commit is contained in:
parent
e2e24e8ebf
commit
4d523b60ef
1 changed files with 4 additions and 3 deletions
|
@ -465,12 +465,13 @@ int mtd_device_parse_register(struct mtd_info *mtd, const char **types,
|
|||
struct mtd_partition *real_parts;
|
||||
|
||||
err = parse_mtd_partitions(mtd, types, &real_parts, parser_data);
|
||||
if (err <= 0 && nr_parts) {
|
||||
if (err <= 0 && nr_parts && parts) {
|
||||
real_parts = kmemdup(parts, sizeof(*parts) * nr_parts,
|
||||
GFP_KERNEL);
|
||||
err = nr_parts;
|
||||
if (!parts)
|
||||
if (!real_parts)
|
||||
err = -ENOMEM;
|
||||
else
|
||||
err = nr_parts;
|
||||
}
|
||||
|
||||
if (err > 0) {
|
||||
|
|
Loading…
Reference in a new issue