On Wed, Jan 24, 2024 at 09:24:08AM +0100, Kurt Kanzenbach wrote:

...

> +static int igc_led_hw_control_set(struct led_classdev *led_cdev,
> +                               unsigned long flags)
> +{
> +     struct igc_led_classdev *ldev = lcdev_to_igc_ldev(led_cdev);
> +     struct igc_adapter *adapter = netdev_priv(ldev->netdev);
> +     bool blink = false;
> +     u32 mode;
> +
> +     if (flags & BIT(TRIGGER_NETDEV_LINK_10))
> +             mode = IGC_LEDCTL_MODE_LINK_10;
> +     if (flags & BIT(TRIGGER_NETDEV_LINK_100))
> +             mode = IGC_LEDCTL_MODE_LINK_100;
> +     if (flags & BIT(TRIGGER_NETDEV_LINK_1000))
> +             mode = IGC_LEDCTL_MODE_LINK_1000;
> +     if (flags & BIT(TRIGGER_NETDEV_LINK_2500))
> +             mode = IGC_LEDCTL_MODE_LINK_2500;
> +     if ((flags & BIT(TRIGGER_NETDEV_TX)) ||
> +         (flags & BIT(TRIGGER_NETDEV_RX)))
> +             mode = IGC_LEDCTL_MODE_ACTIVITY;

Hi Kurt,

I guess this can't happen in practice,
but if none of the conditions above are met,
then mode is used uninitialised below.

Flagged by Smatch.

> +
> +     /* blink is recommended for activity */
> +     if (mode == IGC_LEDCTL_MODE_ACTIVITY)
> +             blink = true;
> +
> +     igc_led_set(adapter, ldev->index, mode, blink);
> +
> +     return 0;
> +}

...

Reply via email to