add_mtd_partitions_of() creates MTD partition slaves from device-tree
sub-nodes but never stores the originating ofnode on the partition.
This means there is no way to match a registered MTD partition back
to its DT node.

Set slave->flash_node = child right after allocate_partition() so
that every DT-created partition carries a reference to its DT node.
This will be used by the image_loader UBI backend to find the MTD
partition that corresponds to a 'compatible = "linux,ubi"' node.

Signed-off-by: Daniel Golle <[email protected]>
---
 drivers/mtd/mtdpart.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
index f3b7f1ee13c..eac7215907b 100644
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -940,6 +940,8 @@ int add_mtd_partitions_of(struct mtd_info *master)
                if (IS_ERR(slave))
                        return PTR_ERR(slave);
 
+               slave->flash_node = child;
+
                mutex_lock(&mtd_partitions_mutex);
                list_add_tail(&slave->node, &master->partitions);
                mutex_unlock(&mtd_partitions_mutex);
-- 
2.53.0

Reply via email to