--- a/drivers/mtd/devices/block2mtd.c +++ b/drivers/mtd/devices/block2mtd.c @@ -32,6 +32,8 @@ #include #include +static const char * const block2mtd_probe_types[] = { "cmdlinepart", NULL }; + /* Info for the block device */ struct block2mtd_dev { struct list_head list; @@ -227,6 +229,7 @@ static struct block2mtd_dev *add_device( #endif const fmode_t mode = FMODE_READ | FMODE_WRITE | FMODE_EXCL; struct block_device *bdev = ERR_PTR(-ENODEV); + struct mtd_part_parser_data ppdata = { 0 }; struct block2mtd_dev *dev; struct mtd_partition *part; char *name; @@ -307,11 +310,7 @@ static struct block2mtd_dev *add_device( dev->mtd.priv = dev; dev->mtd.owner = THIS_MODULE; - part = kzalloc(sizeof(struct mtd_partition), GFP_KERNEL); - part->name = name; - part->offset = 0; - part->size = dev->mtd.size; - if (mtd_device_register(&dev->mtd, part, 1)) { + if (mtd_device_parse_register(&dev->mtd, block2mtd_probe_types, &ppdata, NULL, 0)) { /* Device didn't get added, so free the entry */ goto err_destroy_mutex; }