]> Git Repo - linux.git/commitdiff
power: supply: cros_charge-control: Avoid accessing attributes out of bounds
authorNathan Chancellor <[email protected]>
Tue, 2 Jul 2024 14:48:48 +0000 (07:48 -0700)
committerTzung-Bi Shih <[email protected]>
Wed, 3 Jul 2024 05:54:29 +0000 (05:54 +0000)
Clang warns (or errors with CONFIG_WERROR=y):

  drivers/power/supply/cros_charge-control.c:319:2: error: array index 3 is past the end of the array (that has type 'struct attribute *[3]') [-Werror,-Warray-bounds]
    319 |         priv->attributes[_CROS_CHCTL_ATTR_COUNT] = NULL;
        |         ^                ~~~~~~~~~~~~~~~~~~~~~~
  drivers/power/supply/cros_charge-control.c:49:2: note: array 'attributes' declared here
     49 |         struct attribute *attributes[_CROS_CHCTL_ATTR_COUNT];
        |         ^
  1 error generated.

In earlier revisions of the driver, the attributes array in
cros_chctl_priv had four elements with four distinct assignments but
during review, the number of elements was changed to three through use
of an enum and the assignments became a for loop, except for this one,
which is now out of bounds. This assignment is no longer necessary
because the size of the attributes array no longer accounts for it, so
just remove it to clear up the warning.

Fixes: c6ed48ef5259 ("power: supply: add ChromeOS EC based charge control driver")
Signed-off-by: Nathan Chancellor <[email protected]>
Acked-by: Thomas Weißschuh <[email protected]>
Link: https://lore.kernel.org/r/20240702-cros_charge-control-fix-clang-array-bounds-warning-v1-1-ae04d995cd1d@kernel.org
Signed-off-by: Tzung-Bi Shih <[email protected]>
drivers/power/supply/cros_charge-control.c

index 73d7f2dc0fa34e7d4d80e462bf051032b97d18f7..2dd8ddbd56bc09d380490b3bf2352dcfe92936ce 100644 (file)
@@ -316,7 +316,6 @@ static int cros_chctl_probe(struct platform_device *pdev)
                sysfs_attr_init(&priv->device_attrs[i].attr);
                priv->attributes[i] = &priv->device_attrs[i].attr;
        }
-       priv->attributes[_CROS_CHCTL_ATTR_COUNT] = NULL;
        priv->group.is_visible = cros_chtl_attr_is_visible;
        priv->group.attrs = priv->attributes;
 
This page took 0.062943 seconds and 4 git commands to generate.