of: device: Ignore modalias of reused nodes
authorAlexander Stein <alexander.stein@ew.tq-group.com>
Tue, 7 Feb 2023 11:05:29 +0000 (12:05 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 Feb 2023 11:13:55 +0000 (12:13 +0100)
If of_node is reused, do not use that node's modalias. This will hide
the name of the actual device. This is rather prominent in USB glue
drivers creating a platform device for the host controller.

Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Reviewed-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20230207110531.1060252-2-alexander.stein@ew.tq-group.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/of/device.c

index c674a13..3caaaf1 100644 (file)
@@ -256,7 +256,7 @@ static ssize_t of_device_get_modalias(struct device *dev, char *str, ssize_t len
        ssize_t csize;
        ssize_t tsize;
 
-       if ((!dev) || (!dev->of_node))
+       if ((!dev) || (!dev->of_node) || dev->of_node_reused)
                return -ENODEV;
 
        /* Name & Type */
@@ -376,7 +376,7 @@ int of_device_uevent_modalias(struct device *dev, struct kobj_uevent_env *env)
 {
        int sl;
 
-       if ((!dev) || (!dev->of_node))
+       if ((!dev) || (!dev->of_node) || dev->of_node_reused)
                return -ENODEV;
 
        /* Devicetree modalias is tricky, we add it in 2 steps */