of: device: Do not ignore error code in of_device_uevent_modalias
authorAlexander Stein <alexander.stein@ew.tq-group.com>
Tue, 7 Feb 2023 11:05:30 +0000 (12:05 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 Feb 2023 11:13:55 +0000 (12:13 +0100)
of_device_get_modalias might return an error code, propagate that one.
Otherwise the negative, signed integer is propagated to unsigned integer
for the comparison resulting in a huge 'sl' size.

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-3-alexander.stein@ew.tq-group.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/of/device.c

index 3caaaf1..8271793 100644 (file)
@@ -385,6 +385,8 @@ int of_device_uevent_modalias(struct device *dev, struct kobj_uevent_env *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;