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]

Reply via email to