Re: [linux-next:master 4244/5318] drivers/pci/syscall.c:82 __do_sys_pciconfig_read() error: uninitialized symbol 'dev'.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Aug 05, 2021 at 02:54:10PM +0300, Dan Carpenter wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> head:   2f73937c9aa561e2082839bc1a8efaac75d6e244
> commit: 61a6199787d97660d99aa3399c9165c0cf752211 [4244/5318] PCI: Return ~0 data on pciconfig_read() CAP_SYS_ADMIN failure
> config: ia64-randconfig-m031-20210804 (attached as .config)
> compiler: ia64-linux-gcc (GCC) 10.3.0
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@xxxxxxxxx>
> Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
> 
> smatch warnings:
> drivers/pci/syscall.c:82 __do_sys_pciconfig_read() error: uninitialized symbol 'dev'.
> drivers/pci/syscall.c:82 __do_sys_pciconfig_read() error: uninitialized symbol 'dev'.

Thanks, fixed by
https://lore.kernel.org/r/20210803200836.500658-1-nathan@xxxxxxxxxx, I
think.

> vim +/dev +82 drivers/pci/syscall.c
> 
> c4ea37c26a691a Heiko Carstens       2009-01-14  15  SYSCALL_DEFINE5(pciconfig_read, unsigned long, bus, unsigned long, dfn,
> c4ea37c26a691a Heiko Carstens       2009-01-14  16  		unsigned long, off, unsigned long, len, void __user *, buf)
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  17  {
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  18  	struct pci_dev *dev;
>                                                         ^^^^^^^^^^^^^^^^^^^^
> 
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  19  	u8 byte;
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  20  	u16 word;
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  21  	u32 dword;
> e4585da22ad04a Alan Cox             2007-04-23  22  	long err;
> ef9e4005cbaf02 Heiner Kallweit      2021-01-24  23  	int cfg_ret;
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  24  
> 61a6199787d976 Krzysztof Wilczyński 2021-07-29  25  	err = -EPERM;
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  26  	if (!capable(CAP_SYS_ADMIN))
> 61a6199787d976 Krzysztof Wilczyński 2021-07-29  27  		goto error;
>                                                                 ^^^^^^^^^^
> 
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  28  
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  29  	err = -ENODEV;
> 39c9465204e8f4 Sinan Kaya           2017-12-19  30  	dev = pci_get_domain_bus_and_slot(0, bus, dfn);
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  31  	if (!dev)
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  32  		goto error;
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  33  
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  34  	switch (len) {
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  35  	case 1:
> e04b0ea2e0f9c1 Brian King           2005-09-27  36  		cfg_ret = pci_user_read_config_byte(dev, off, &byte);
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  37  		break;
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  38  	case 2:
> e04b0ea2e0f9c1 Brian King           2005-09-27  39  		cfg_ret = pci_user_read_config_word(dev, off, &word);
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  40  		break;
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  41  	case 4:
> e04b0ea2e0f9c1 Brian King           2005-09-27  42  		cfg_ret = pci_user_read_config_dword(dev, off, &dword);
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  43  		break;
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  44  	default:
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  45  		err = -EINVAL;
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  46  		goto error;
> f7625980f5820e Bjorn Helgaas        2013-11-14  47  	}
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  48  
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  49  	err = -EIO;
> ef9e4005cbaf02 Heiner Kallweit      2021-01-24  50  	if (cfg_ret)
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  51  		goto error;
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  52  
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  53  	switch (len) {
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  54  	case 1:
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  55  		err = put_user(byte, (unsigned char __user *)buf);
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  56  		break;
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  57  	case 2:
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  58  		err = put_user(word, (unsigned short __user *)buf);
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  59  		break;
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  60  	case 4:
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  61  		err = put_user(dword, (unsigned int __user *)buf);
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  62  		break;
> e4585da22ad04a Alan Cox             2007-04-23  63  	}
> e4585da22ad04a Alan Cox             2007-04-23  64  	pci_dev_put(dev);
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  65  	return err;
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  66  
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  67  error:
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  68  	/* ??? XFree86 doesn't even check the return value.  They
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  69  	   just look for 0xffffffff in the output, since that's what
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  70  	   they get instead of a machine check on x86.  */
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  71  	switch (len) {
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  72  	case 1:
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  73  		put_user(-1, (unsigned char __user *)buf);
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  74  		break;
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  75  	case 2:
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  76  		put_user(-1, (unsigned short __user *)buf);
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  77  		break;
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  78  	case 4:
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  79  		put_user(-1, (unsigned int __user *)buf);
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  80  		break;
> e4585da22ad04a Alan Cox             2007-04-23  81  	}
> e4585da22ad04a Alan Cox             2007-04-23 @82  	pci_dev_put(dev);
>                                                                     ^^^
> Uninitialized.
> 
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  83  	return err;
> ^1da177e4c3f41 Linus Torvalds       2005-04-16  84  }
> 
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
> 





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux