1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- From 2c77c57d22adb05b21cdb333a0c42bdfa0e19835 Mon Sep 17 00:00:00 2001
- From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
- Date: Tue, 16 Jan 2018 16:45:41 +0100
- Subject: [PATCH] mtd: move code adding master MTD out of
- mtd_add_device_partitions()
- MIME-Version: 1.0
- Content-Type: text/plain; charset=UTF-8
- Content-Transfer-Encoding: 8bit
- This change is a small cleanup of mtd_device_parse_register(). When
- using MTD_PARTITIONED_MASTER it makes sure a master MTD is registered
- before dealing with partitions. The advantage of this is not mixing
- code handling master MTD with code handling partitions.
- This commit doesn't change any behavior except from a slightly different
- failure code path. The new code may need to call del_mtd_device when
- something goes wrong.
- Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
- Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
- ---
- drivers/mtd/mtdcore.c | 25 +++++++++++++------------
- 1 file changed, 13 insertions(+), 12 deletions(-)
- --- a/drivers/mtd/mtdcore.c
- +++ b/drivers/mtd/mtdcore.c
- @@ -641,20 +641,12 @@ static int mtd_add_device_partitions(str
- {
- const struct mtd_partition *real_parts = parts->parts;
- int nbparts = parts->nr_parts;
- - int ret;
-
- - if (nbparts == 0 || IS_ENABLED(CONFIG_MTD_PARTITIONED_MASTER)) {
- - ret = add_mtd_device(mtd);
- - if (ret)
- - return ret;
- - }
- + if (!nbparts && !device_is_registered(&mtd->dev))
- + return add_mtd_device(mtd);
-
- - if (nbparts > 0) {
- - ret = add_mtd_partitions(mtd, real_parts, nbparts);
- - if (ret && IS_ENABLED(CONFIG_MTD_PARTITIONED_MASTER))
- - del_mtd_device(mtd);
- - return ret;
- - }
- + if (nbparts > 0)
- + return add_mtd_partitions(mtd, real_parts, nbparts);
-
- return 0;
- }
- @@ -714,6 +706,12 @@ int mtd_device_parse_register(struct mtd
-
- mtd_set_dev_defaults(mtd);
-
- + if (IS_ENABLED(CONFIG_MTD_PARTITIONED_MASTER)) {
- + ret = add_mtd_device(mtd);
- + if (ret)
- + return ret;
- + }
- +
- memset(&parsed, 0, sizeof(parsed));
-
- ret = parse_mtd_partitions(mtd, types, &parsed, parser_data);
- @@ -753,6 +751,9 @@ int mtd_device_parse_register(struct mtd
- out:
- /* Cleanup any parsed partitions */
- mtd_part_parser_cleanup(&parsed);
- + if (ret && device_is_registered(&mtd->dev))
- + del_mtd_device(mtd);
- +
- return ret;
- }
- EXPORT_SYMBOL_GPL(mtd_device_parse_register);
|