Re: [PATCH] Input: tca6416-keypad - Add OF support for driver instantiation

From: Dan Carpenter
Date: Wed Jun 18 2025 - 13:41:32 EST


Hi Tomáš,

kernel test robot noticed the following build warnings:

https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Tom-Ju-ena/Input-tca6416-keypad-Add-OF-support-for-driver-instantiation/20250611-094643
base: https://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git next
patch link: https://lore.kernel.org/r/20250610154609.1382818-1-jurenatomas%40gmail.com
patch subject: [PATCH] Input: tca6416-keypad - Add OF support for driver instantiation
config: csky-randconfig-r073-20250612 (https://download.01.org/0day-ci/archive/20250614/202506140034.iXbhyNCx-lkp@xxxxxxxxx/config)
compiler: csky-linux-gcc (GCC) 14.3.0

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/202506140034.iXbhyNCx-lkp@xxxxxxxxx/

smatch warnings:
drivers/input/keyboard/tca6416-keypad.c:263 tca6416_keypad_probe() error: we previously assumed 'pdata' could be null (see line 253)

vim +/pdata +263 drivers/input/keyboard/tca6416-keypad.c

3da11976b80c663 Uwe Kleine-König 2022-11-18 236 static int tca6416_keypad_probe(struct i2c_client *client)
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 237 {
c4c4a926acb6b1c Tomas Jurena 2025-06-10 238 uint8_t io_size = (uintptr_t)i2c_get_match_data(client);
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 239 struct tca6416_keys_platform_data *pdata;
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 240 struct tca6416_keypad_chip *chip;
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 241 struct input_dev *input;
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 242 int error;
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 243 int i;
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 244
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 245 /* Check functionality */
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 246 if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE)) {
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 247 dev_err(&client->dev, "%s adapter not supported\n",
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 248 dev_driver_string(&client->adapter->dev));
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 249 return -ENODEV;
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 250 }
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 251
c838cb3d477f797 Jingoo Han 2013-12-05 252 pdata = dev_get_platdata(&client->dev);
c4c4a926acb6b1c Tomas Jurena 2025-06-10 @253 if (!pdata && dev_fwnode(&client->dev)) {

Imagine pdata is NULL and so is dev_fwnode()

c4c4a926acb6b1c Tomas Jurena 2025-06-10 254 pdata = tca6416_parse_properties(&client->dev, io_size);
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 255 if (!pdata) {
c4c4a926acb6b1c Tomas Jurena 2025-06-10 256 dev_err(&client->dev,
c4c4a926acb6b1c Tomas Jurena 2025-06-10 257 "Failed to parse device configuration from properties\n");
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 258 return -EINVAL;
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 259 }
c4c4a926acb6b1c Tomas Jurena 2025-06-10 260 }
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 261
91a4c69052bb660 Yangtao Li 2023-07-23 262 chip = devm_kzalloc(&client->dev,
91a4c69052bb660 Yangtao Li 2023-07-23 @263 struct_size(chip, buttons, pdata->nbuttons),
^^^^^^^^^^^^^^^
Then it will crash

91a4c69052bb660 Yangtao Li 2023-07-23 264 GFP_KERNEL);
91a4c69052bb660 Yangtao Li 2023-07-23 265 if (!chip)
91a4c69052bb660 Yangtao Li 2023-07-23 266 return -ENOMEM;
91a4c69052bb660 Yangtao Li 2023-07-23 267
91a4c69052bb660 Yangtao Li 2023-07-23 268 input = devm_input_allocate_device(&client->dev);
91a4c69052bb660 Yangtao Li 2023-07-23 269 if (!input)
91a4c69052bb660 Yangtao Li 2023-07-23 270 return -ENOMEM;
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 271
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 272 chip->client = client;
30ba3ead05763b1 Sriramakrishnan Govindarajan 2010-05-03 273 chip->input = input;

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki