Merge tag 'driver-core-6.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-block.git] / drivers / of / device.c
index dda51b7ce5970dd7f57cd84362cc209cf7c0f8ec..955bfb3d1a834e12a935b98406f9d551b3404b5b 100644 (file)
@@ -256,7 +256,7 @@ static ssize_t of_device_get_modalias(const struct device *dev, char *str, ssize
        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(const struct device *dev, struct kobj_uevent_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 */
@@ -385,6 +385,8 @@ int of_device_uevent_modalias(const struct device *dev, struct kobj_uevent_env *
 
        sl = of_device_get_modalias(dev, &env->buf[env->buflen-1],
                                    sizeof(env->buf) - env->buflen);
+       if (sl < 0)
+               return sl;
        if (sl >= (sizeof(env->buf) - env->buflen))
                return -ENOMEM;
        env->buflen += sl;