diff options
Diffstat (limited to 'drivers/mtd/mtdcore.c')
-rw-r--r-- | drivers/mtd/mtdcore.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c index 62f83b050978..868ee52d5063 100644 --- a/drivers/mtd/mtdcore.c +++ b/drivers/mtd/mtdcore.c | |||
@@ -532,7 +532,7 @@ out_error: | |||
532 | } | 532 | } |
533 | 533 | ||
534 | static int mtd_add_device_partitions(struct mtd_info *mtd, | 534 | static int mtd_add_device_partitions(struct mtd_info *mtd, |
535 | struct mtd_partition *real_parts, | 535 | const struct mtd_partition *real_parts, |
536 | int nbparts) | 536 | int nbparts) |
537 | { | 537 | { |
538 | int ret; | 538 | int ret; |
@@ -589,16 +589,12 @@ int mtd_device_parse_register(struct mtd_info *mtd, const char * const *types, | |||
589 | int nr_parts) | 589 | int nr_parts) |
590 | { | 590 | { |
591 | int ret; | 591 | int ret; |
592 | struct mtd_partition *real_parts = NULL; | 592 | const struct mtd_partition *real_parts = NULL; |
593 | 593 | ||
594 | ret = parse_mtd_partitions(mtd, types, &real_parts, parser_data); | 594 | ret = parse_mtd_partitions(mtd, types, &real_parts, parser_data); |
595 | if (ret <= 0 && nr_parts && parts) { | 595 | if (ret <= 0 && nr_parts && parts) { |
596 | real_parts = kmemdup(parts, sizeof(*parts) * nr_parts, | 596 | real_parts = parts; |
597 | GFP_KERNEL); | 597 | ret = nr_parts; |
598 | if (!real_parts) | ||
599 | ret = -ENOMEM; | ||
600 | else | ||
601 | ret = nr_parts; | ||
602 | } | 598 | } |
603 | /* Didn't come up with either parsed OR fallback partitions */ | 599 | /* Didn't come up with either parsed OR fallback partitions */ |
604 | if (ret < 0) { | 600 | if (ret < 0) { |
@@ -628,7 +624,9 @@ int mtd_device_parse_register(struct mtd_info *mtd, const char * const *types, | |||
628 | } | 624 | } |
629 | 625 | ||
630 | out: | 626 | out: |
631 | kfree(real_parts); | 627 | /* Cleanup any parsed partitions */ |
628 | if (real_parts != parts) | ||
629 | kfree(real_parts); | ||
632 | return ret; | 630 | return ret; |
633 | } | 631 | } |
634 | EXPORT_SYMBOL_GPL(mtd_device_parse_register); | 632 | EXPORT_SYMBOL_GPL(mtd_device_parse_register); |