Hi Krzysztof, I love your patch! Perhaps something to improve: [auto build test WARNING on input/next] [also build test WARNING on sunxi/sunxi/for-next linus/master v5.9-rc2 next-20200827] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Krzysztof-Kozlowski/Input-ep93xx_keypad-Fix-handling-of-platform_get_irq-error/20200827-152706 base: https://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git next config: i386-randconfig-m021-20200828 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> smatch warnings: drivers/input/keyboard/twl4030_keypad.c:379 twl4030_kp_probe() warn: unsigned 'kp->irq' is never less than zero. # https://github.com/0day-ci/linux/commit/d83af6799bafdf8f1f84ddfc48876f621735963b git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Krzysztof-Kozlowski/Input-ep93xx_keypad-Fix-handling-of-platform_get_irq-error/20200827-152706 git checkout d83af6799bafdf8f1f84ddfc48876f621735963b vim +379 drivers/input/keyboard/twl4030_keypad.c 318 319 /* 320 * Registers keypad device with input subsystem 321 * and configures TWL4030 keypad registers 322 */ 323 static int twl4030_kp_probe(struct platform_device *pdev) 324 { 325 struct twl4030_keypad_data *pdata = dev_get_platdata(&pdev->dev); 326 const struct matrix_keymap_data *keymap_data = NULL; 327 struct twl4030_keypad *kp; 328 struct input_dev *input; 329 u8 reg; 330 int error; 331 332 kp = devm_kzalloc(&pdev->dev, sizeof(*kp), GFP_KERNEL); 333 if (!kp) 334 return -ENOMEM; 335 336 input = devm_input_allocate_device(&pdev->dev); 337 if (!input) 338 return -ENOMEM; 339 340 /* get the debug device */ 341 kp->dbg_dev = &pdev->dev; 342 kp->input = input; 343 344 /* setup input device */ 345 input->name = "TWL4030 Keypad"; 346 input->phys = "twl4030_keypad/input0"; 347 348 input->id.bustype = BUS_HOST; 349 input->id.vendor = 0x0001; 350 input->id.product = 0x0001; 351 input->id.version = 0x0003; 352 353 if (pdata) { 354 if (!pdata->rows || !pdata->cols || !pdata->keymap_data) { 355 dev_err(&pdev->dev, "Missing platform_data\n"); 356 return -EINVAL; 357 } 358 359 kp->n_rows = pdata->rows; 360 kp->n_cols = pdata->cols; 361 kp->autorepeat = pdata->rep; 362 keymap_data = pdata->keymap_data; 363 } else { 364 error = matrix_keypad_parse_properties(&pdev->dev, &kp->n_rows, 365 &kp->n_cols); 366 if (error) 367 return error; 368 369 kp->autorepeat = true; 370 } 371 372 if (kp->n_rows > TWL4030_MAX_ROWS || kp->n_cols > TWL4030_MAX_COLS) { 373 dev_err(&pdev->dev, 374 "Invalid rows/cols amount specified in platform/devicetree data\n"); 375 return -EINVAL; 376 } 377 378 kp->irq = platform_get_irq(pdev, 0); > 379 if (kp->irq < 0) 380 return kp->irq; 381 382 error = matrix_keypad_build_keymap(keymap_data, NULL, 383 TWL4030_MAX_ROWS, 384 1 << TWL4030_ROW_SHIFT, 385 kp->keymap, input); 386 if (error) { 387 dev_err(kp->dbg_dev, "Failed to build keymap\n"); 388 return error; 389 } 390 391 input_set_capability(input, EV_MSC, MSC_SCAN); 392 /* Enable auto repeat feature of Linux input subsystem */ 393 if (kp->autorepeat) 394 __set_bit(EV_REP, input->evbit); 395 396 error = input_register_device(input); 397 if (error) { 398 dev_err(kp->dbg_dev, 399 "Unable to register twl4030 keypad device\n"); 400 return error; 401 } 402 403 error = twl4030_kp_program(kp); 404 if (error) 405 return error; 406 407 /* 408 * This ISR will always execute in kernel thread context because of 409 * the need to access the TWL4030 over the I2C bus. 410 * 411 * NOTE: we assume this host is wired to TWL4040 INT1, not INT2 ... 412 */ 413 error = devm_request_threaded_irq(&pdev->dev, kp->irq, NULL, do_kp_irq, 414 0, pdev->name, kp); 415 if (error) { 416 dev_info(kp->dbg_dev, "request_irq failed for irq no=%d: %d\n", 417 kp->irq, error); 418 return error; 419 } 420 421 /* Enable KP and TO interrupts now. */ 422 reg = (u8) ~(KEYP_IMR1_KP | KEYP_IMR1_TO); 423 if (twl4030_kpwrite_u8(kp, reg, KEYP_IMR1)) { 424 /* mask all events - we don't care about the result */ 425 (void) twl4030_kpwrite_u8(kp, 0xff, KEYP_IMR1); 426 return -EIO; 427 } 428 429 return 0; 430 } 431 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip