Re: [PATCH 2/3] leds: ltc3208: add driver
From: Dan Carpenter
Date: Thu Mar 19 2026 - 12:04:54 EST
Hi Jan,
kernel test robot noticed the following build warnings:
url: https://github.com/intel-lab-lkp/linux/commits/Jan-Carlo-Roleda/Add-Maintainers-to-LTC3208-LED-Driver/20260319-005902
base: e68f95a51d1a8c1594b536c4d495cbea38d47561
patch link: https://lore.kernel.org/r/20260318-upstream-ltc3208-v1-2-015f1f1e9065%40analog.com
patch subject: [PATCH 2/3] leds: ltc3208: add driver
config: s390-randconfig-r072-20260319 (https://download.01.org/0day-ci/archive/20260319/202603192312.QLMHYKWa-lkp@xxxxxxxxx/config)
compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project 4abb927bacf37f18f6359a41639a6d1b3bffffb5)
smatch: v0.5.0-9004-gb810ac53
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
| Closes: https://lore.kernel.org/r/202603192312.QLMHYKWa-lkp@xxxxxxxxx/
New smatch warnings:
drivers/leds/leds-ltc3208.c:222 ltc3208_probe() error: buffer overflow 'ltc3208_dt_aux_channels' 4 <= 4
drivers/leds/leds-ltc3208.c:227 ltc3208_probe() error: buffer overflow 'aux_channels' 4 <= 4
Old smatch warnings:
drivers/leds/leds-ltc3208.c:229 ltc3208_probe() error: buffer overflow 'aux_channels' 4 <= 4
vim +/ltc3208_dt_aux_channels +222 drivers/leds/leds-ltc3208.c
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 176 static int ltc3208_probe(struct i2c_client *client)
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 177 {
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 178 enum ltc3208_aux_channel aux_channels[LTC3208_NUM_AUX_LEDS];
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 179 struct ltc3208_dev *data;
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 180 struct ltc3208_led *leds;
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 181 struct regmap *map;
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 182 int ret, i;
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 183 u32 val;
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 184 bool dropdis_rgb_aux4;
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 185 bool dis_camhl;
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 186 bool en_rgbs;
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 187
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 188 map = devm_regmap_init_i2c(client, <c3208_regmap_cfg);
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 189 if (IS_ERR(map))
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 190 return dev_err_probe(&client->dev, PTR_ERR(map),
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 191 "Failed to initialize regmap\n");
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 192
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 193 data = devm_kzalloc(&client->dev, sizeof(*data), GFP_KERNEL);
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 194 if (!data)
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 195 return -ENOMEM;
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 196
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 197 leds = devm_kcalloc(&client->dev, LTC3208_NUM_LED_GRPS,
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 198 sizeof(struct ltc3208_led), GFP_KERNEL);
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 199 if (!leds)
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 200 return -ENOMEM;
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 201
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 202 data->client = client;
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 203 data->map = map;
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 204
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 205 /* initialize options from devicetree */
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 206 dis_camhl = device_property_read_bool(&client->dev,
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 207 "adi,disable-camhl-pin");
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 208 en_rgbs = device_property_read_bool(&client->dev,
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 209 "adi,cfg-enrgbs-pin");
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 210 dropdis_rgb_aux4 = device_property_read_bool(&client->dev,
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 211 "adi,disable-rgb-aux4-dropout");
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 212
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 213 ret = ltc3208_update_options(data, en_rgbs, dis_camhl,
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 214 dropdis_rgb_aux4);
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 215 if (ret)
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 216 return dev_err_probe(&client->dev, ret,
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 217 "error writing to options register\n");
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 218
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 219 /* initialize aux channel configurations from devicetree */
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 220 for (i = 0; i <= LTC3208_NUM_AUX_LEDS; i++) {
^^^^^^^^^^^^^^^^^^^^^^^^^
Should this be < LTC3208_NUM_AUX_LEDS instead of <=?
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 221 ret = device_property_match_property_string(&client->dev,
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 @222 ltc3208_dt_aux_channels[i],
^^^^^^^^^^^^^^^^^^^^^^^^^^
Out of bounds.
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 223 ltc3208_aux_opt,
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 224 LTC3208_NUM_AUX_OPT);
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 225 /* use default value if absent in devicetree */
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 226 if (ret == -EINVAL)
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 @227 aux_channels[i] = LTC3208_AUX_CHAN_AUX;
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 228 else if (ret >= 0)
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 229 aux_channels[i] = ret;
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 230 else
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 231 return dev_err_probe(&client->dev, ret,
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 232 "Failed getting aux-channel.\n");
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 233 }
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 234
76a4ad1dec9ab2b Jan Carlo Roleda 2026-03-18 235 ret = ltc3208_update_aux_dac(data, aux_channels[0], aux_channels[1],
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki