CC: [email protected] BCC: [email protected] CC: Linux Memory Management List <[email protected]> TO: "Matthew Wilcox (Oracle)" <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 71941773e143369a73c9c4a3b62fbb60736a1182 commit: b786e44a4dbfe64476e7120ec7990b89a37be37d [9762/11953] mm: Convert page_vma_mapped_walk to work on PFNs :::::: branch date: 29 hours ago :::::: commit date: 8 days ago config: riscv-randconfig-m031-20220310 (https://download.01.org/0day-ci/archive/20220311/[email protected]/config) compiler: riscv32-linux-gcc (GCC) 11.2.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: drivers/spi/spidev.c:485 spidev_ioctl() error: uninitialized symbol 'n_ioc'. mm/page_vma_mapped.c:246 page_vma_mapped_walk() warn: always true condition '(pvmw->nr_pages >= (1 << ( - (12)))) => (0-u32max >= 0)' vim +/n_ioc +485 drivers/spi/spidev.c 7782a1a94825db Ian Abbott 2015-01-30 342 4ef754b7d7971a Alan Cox 2008-07-23 343 static long 4ef754b7d7971a Alan Cox 2008-07-23 344 spidev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) 814a8d50eb1d88 Andrea Paterniani 2007-05-08 345 { 814a8d50eb1d88 Andrea Paterniani 2007-05-08 346 int retval = 0; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 347 struct spidev_data *spidev; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 348 struct spi_device *spi; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 349 u32 tmp; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 350 unsigned n_ioc; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 351 struct spi_ioc_transfer *ioc; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 352 814a8d50eb1d88 Andrea Paterniani 2007-05-08 353 /* Check type and command number */ 814a8d50eb1d88 Andrea Paterniani 2007-05-08 354 if (_IOC_TYPE(cmd) != SPI_IOC_MAGIC) 814a8d50eb1d88 Andrea Paterniani 2007-05-08 355 return -ENOTTY; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 356 25d5cb4b0375e5 David Brownell 2008-05-23 357 /* guard against device removal before, or while, 25d5cb4b0375e5 David Brownell 2008-05-23 358 * we issue this ioctl. 25d5cb4b0375e5 David Brownell 2008-05-23 359 */ 814a8d50eb1d88 Andrea Paterniani 2007-05-08 360 spidev = filp->private_data; 25d5cb4b0375e5 David Brownell 2008-05-23 361 spin_lock_irq(&spidev->spi_lock); 25d5cb4b0375e5 David Brownell 2008-05-23 362 spi = spi_dev_get(spidev->spi); 25d5cb4b0375e5 David Brownell 2008-05-23 363 spin_unlock_irq(&spidev->spi_lock); 25d5cb4b0375e5 David Brownell 2008-05-23 364 25d5cb4b0375e5 David Brownell 2008-05-23 365 if (spi == NULL) 25d5cb4b0375e5 David Brownell 2008-05-23 366 return -ESHUTDOWN; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 367 4ef754b7d7971a Alan Cox 2008-07-23 368 /* use the buffer lock here for triple duty: 4ef754b7d7971a Alan Cox 2008-07-23 369 * - prevent I/O (from us) so calling spi_setup() is safe; 4ef754b7d7971a Alan Cox 2008-07-23 370 * - prevent concurrent SPI_IOC_WR_* from morphing 4ef754b7d7971a Alan Cox 2008-07-23 371 * data fields while SPI_IOC_RD_* reads them; 4ef754b7d7971a Alan Cox 2008-07-23 372 * - SPI_IOC_MESSAGE needs the buffer locked "normally". 4ef754b7d7971a Alan Cox 2008-07-23 373 */ 4ef754b7d7971a Alan Cox 2008-07-23 374 mutex_lock(&spidev->buf_lock); 4ef754b7d7971a Alan Cox 2008-07-23 375 814a8d50eb1d88 Andrea Paterniani 2007-05-08 376 switch (cmd) { 814a8d50eb1d88 Andrea Paterniani 2007-05-08 377 /* read requests */ 814a8d50eb1d88 Andrea Paterniani 2007-05-08 378 case SPI_IOC_RD_MODE: 251d59515fe468 Al Viro 2017-04-20 379 retval = put_user(spi->mode & SPI_MODE_MASK, 814a8d50eb1d88 Andrea Paterniani 2007-05-08 380 (__u8 __user *)arg); 814a8d50eb1d88 Andrea Paterniani 2007-05-08 381 break; dc64d39b54c1e9 Geert Uytterhoeven 2014-02-25 382 case SPI_IOC_RD_MODE32: 251d59515fe468 Al Viro 2017-04-20 383 retval = put_user(spi->mode & SPI_MODE_MASK, dc64d39b54c1e9 Geert Uytterhoeven 2014-02-25 384 (__u32 __user *)arg); dc64d39b54c1e9 Geert Uytterhoeven 2014-02-25 385 break; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 386 case SPI_IOC_RD_LSB_FIRST: 251d59515fe468 Al Viro 2017-04-20 387 retval = put_user((spi->mode & SPI_LSB_FIRST) ? 1 : 0, 814a8d50eb1d88 Andrea Paterniani 2007-05-08 388 (__u8 __user *)arg); 814a8d50eb1d88 Andrea Paterniani 2007-05-08 389 break; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 390 case SPI_IOC_RD_BITS_PER_WORD: 251d59515fe468 Al Viro 2017-04-20 391 retval = put_user(spi->bits_per_word, (__u8 __user *)arg); 814a8d50eb1d88 Andrea Paterniani 2007-05-08 392 break; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 393 case SPI_IOC_RD_MAX_SPEED_HZ: 251d59515fe468 Al Viro 2017-04-20 394 retval = put_user(spidev->speed_hz, (__u32 __user *)arg); 814a8d50eb1d88 Andrea Paterniani 2007-05-08 395 break; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 396 814a8d50eb1d88 Andrea Paterniani 2007-05-08 397 /* write requests */ 814a8d50eb1d88 Andrea Paterniani 2007-05-08 398 case SPI_IOC_WR_MODE: dc64d39b54c1e9 Geert Uytterhoeven 2014-02-25 399 case SPI_IOC_WR_MODE32: dc64d39b54c1e9 Geert Uytterhoeven 2014-02-25 400 if (cmd == SPI_IOC_WR_MODE) 251d59515fe468 Al Viro 2017-04-20 401 retval = get_user(tmp, (u8 __user *)arg); dc64d39b54c1e9 Geert Uytterhoeven 2014-02-25 402 else 251d59515fe468 Al Viro 2017-04-20 403 retval = get_user(tmp, (u32 __user *)arg); 814a8d50eb1d88 Andrea Paterniani 2007-05-08 404 if (retval == 0) { 138c9c32f09089 Lukas Wunner 2020-02-18 405 struct spi_controller *ctlr = spi->controller; e6456186cae76f Geert Uytterhoeven 2014-02-25 406 u32 save = spi->mode; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 407 814a8d50eb1d88 Andrea Paterniani 2007-05-08 408 if (tmp & ~SPI_MODE_MASK) { 814a8d50eb1d88 Andrea Paterniani 2007-05-08 409 retval = -EINVAL; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 410 break; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 411 } 814a8d50eb1d88 Andrea Paterniani 2007-05-08 412 138c9c32f09089 Lukas Wunner 2020-02-18 413 if (ctlr->use_gpio_descriptors && ctlr->cs_gpiods && 138c9c32f09089 Lukas Wunner 2020-02-18 414 ctlr->cs_gpiods[spi->chip_select]) 138c9c32f09089 Lukas Wunner 2020-02-18 415 tmp |= SPI_CS_HIGH; 138c9c32f09089 Lukas Wunner 2020-02-18 416 814a8d50eb1d88 Andrea Paterniani 2007-05-08 417 tmp |= spi->mode & ~SPI_MODE_MASK; dd06a0c6b6f64f Andy Shevchenko 2021-11-22 418 spi->mode = tmp & SPI_MODE_USER_MASK; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 419 retval = spi_setup(spi); 814a8d50eb1d88 Andrea Paterniani 2007-05-08 420 if (retval < 0) 814a8d50eb1d88 Andrea Paterniani 2007-05-08 421 spi->mode = save; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 422 else dc64d39b54c1e9 Geert Uytterhoeven 2014-02-25 423 dev_dbg(&spi->dev, "spi mode %x\n", tmp); 814a8d50eb1d88 Andrea Paterniani 2007-05-08 424 } 814a8d50eb1d88 Andrea Paterniani 2007-05-08 425 break; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 426 case SPI_IOC_WR_LSB_FIRST: 251d59515fe468 Al Viro 2017-04-20 427 retval = get_user(tmp, (__u8 __user *)arg); 814a8d50eb1d88 Andrea Paterniani 2007-05-08 428 if (retval == 0) { e6456186cae76f Geert Uytterhoeven 2014-02-25 429 u32 save = spi->mode; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 430 814a8d50eb1d88 Andrea Paterniani 2007-05-08 431 if (tmp) 814a8d50eb1d88 Andrea Paterniani 2007-05-08 432 spi->mode |= SPI_LSB_FIRST; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 433 else 814a8d50eb1d88 Andrea Paterniani 2007-05-08 434 spi->mode &= ~SPI_LSB_FIRST; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 435 retval = spi_setup(spi); 814a8d50eb1d88 Andrea Paterniani 2007-05-08 436 if (retval < 0) 814a8d50eb1d88 Andrea Paterniani 2007-05-08 437 spi->mode = save; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 438 else 814a8d50eb1d88 Andrea Paterniani 2007-05-08 439 dev_dbg(&spi->dev, "%csb first\n", 814a8d50eb1d88 Andrea Paterniani 2007-05-08 440 tmp ? 'l' : 'm'); 814a8d50eb1d88 Andrea Paterniani 2007-05-08 441 } 814a8d50eb1d88 Andrea Paterniani 2007-05-08 442 break; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 443 case SPI_IOC_WR_BITS_PER_WORD: 251d59515fe468 Al Viro 2017-04-20 444 retval = get_user(tmp, (__u8 __user *)arg); 814a8d50eb1d88 Andrea Paterniani 2007-05-08 445 if (retval == 0) { 814a8d50eb1d88 Andrea Paterniani 2007-05-08 446 u8 save = spi->bits_per_word; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 447 814a8d50eb1d88 Andrea Paterniani 2007-05-08 448 spi->bits_per_word = tmp; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 449 retval = spi_setup(spi); 814a8d50eb1d88 Andrea Paterniani 2007-05-08 450 if (retval < 0) 814a8d50eb1d88 Andrea Paterniani 2007-05-08 451 spi->bits_per_word = save; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 452 else 814a8d50eb1d88 Andrea Paterniani 2007-05-08 453 dev_dbg(&spi->dev, "%d bits per word\n", tmp); 814a8d50eb1d88 Andrea Paterniani 2007-05-08 454 } 814a8d50eb1d88 Andrea Paterniani 2007-05-08 455 break; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 456 case SPI_IOC_WR_MAX_SPEED_HZ: 251d59515fe468 Al Viro 2017-04-20 457 retval = get_user(tmp, (__u32 __user *)arg); 814a8d50eb1d88 Andrea Paterniani 2007-05-08 458 if (retval == 0) { 814a8d50eb1d88 Andrea Paterniani 2007-05-08 459 u32 save = spi->max_speed_hz; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 460 814a8d50eb1d88 Andrea Paterniani 2007-05-08 461 spi->max_speed_hz = tmp; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 462 retval = spi_setup(spi); 4276fc82fc5d1a Oleksandr Suvorov 2020-02-29 463 if (retval == 0) { 9169051617df7f Mark Brown 2014-11-08 464 spidev->speed_hz = tmp; 4276fc82fc5d1a Oleksandr Suvorov 2020-02-29 465 dev_dbg(&spi->dev, "%d Hz (max)\n", 4276fc82fc5d1a Oleksandr Suvorov 2020-02-29 466 spidev->speed_hz); 4276fc82fc5d1a Oleksandr Suvorov 2020-02-29 467 } 9169051617df7f Mark Brown 2014-11-08 468 spi->max_speed_hz = save; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 469 } 814a8d50eb1d88 Andrea Paterniani 2007-05-08 470 break; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 471 814a8d50eb1d88 Andrea Paterniani 2007-05-08 472 default: 814a8d50eb1d88 Andrea Paterniani 2007-05-08 473 /* segmented and/or full-duplex I/O request */ 7782a1a94825db Ian Abbott 2015-01-30 474 /* Check message and copy into scratch area */ 7782a1a94825db Ian Abbott 2015-01-30 475 ioc = spidev_get_ioc_message(cmd, 7782a1a94825db Ian Abbott 2015-01-30 476 (struct spi_ioc_transfer __user *)arg, &n_ioc); 7782a1a94825db Ian Abbott 2015-01-30 477 if (IS_ERR(ioc)) { 7782a1a94825db Ian Abbott 2015-01-30 478 retval = PTR_ERR(ioc); 25d5cb4b0375e5 David Brownell 2008-05-23 479 break; 25d5cb4b0375e5 David Brownell 2008-05-23 480 } 7782a1a94825db Ian Abbott 2015-01-30 481 if (!ioc) 7782a1a94825db Ian Abbott 2015-01-30 482 break; /* n_ioc is also 0 */ 814a8d50eb1d88 Andrea Paterniani 2007-05-08 483 7782a1a94825db Ian Abbott 2015-01-30 484 /* translate to spi_message, execute */ 7782a1a94825db Ian Abbott 2015-01-30 @485 retval = spidev_message(spidev, ioc, n_ioc); 7782a1a94825db Ian Abbott 2015-01-30 486 kfree(ioc); 814a8d50eb1d88 Andrea Paterniani 2007-05-08 487 break; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 488 } 814a8d50eb1d88 Andrea Paterniani 2007-05-08 489 7782a1a94825db Ian Abbott 2015-01-30 490 mutex_unlock(&spidev->buf_lock); 7782a1a94825db Ian Abbott 2015-01-30 491 spi_dev_put(spi); 7782a1a94825db Ian Abbott 2015-01-30 492 return retval; 814a8d50eb1d88 Andrea Paterniani 2007-05-08 493 } 7782a1a94825db Ian Abbott 2015-01-30 494 :::::: The code at line 485 was first introduced by commit :::::: 7782a1a94825db5163f376beb8db6148fdf1aef0 spi: spidev: Convert buf pointers for 32-bit compat SPI_IOC_MESSAGE(n) :::::: TO: Ian Abbott <[email protected]> :::::: CC: Mark Brown <[email protected]> --- 0-DAY CI Kernel Test Service https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
