* [pci:wip/bjorn-vpd-v2 5/9] drivers/pci/vpd.c:88:19: warning: format '%zu' expects argument of type 'size_t', but argument 3 has type 'int'
@ 2021-07-30 21:40 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-07-30 21:40 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: kbuild-all, linux-pci, Hannes Reinecke
[-- Attachment #1: Type: text/plain, Size: 11888 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git wip/bjorn-vpd-v2
head: d4466f3225fe2067d1a815ce03e1ab7abc6c3c28
commit: 49c5c3061498060f93d08a2386503596e0ff14be [5/9] PCI/VPD: Don't check Large Resource Item Names for validity
config: arm64-randconfig-r001-20210730 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 10.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git/commit/?id=49c5c3061498060f93d08a2386503596e0ff14be
git remote add pci https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git
git fetch --no-tags pci wip/bjorn-vpd-v2
git checkout 49c5c3061498060f93d08a2386503596e0ff14be
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-10.3.0 make.cross ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
In file included from include/linux/device.h:15,
from include/linux/pci.h:37,
from drivers/pci/vpd.c:8:
drivers/pci/vpd.c: In function 'pci_vpd_size':
>> drivers/pci/vpd.c:88:19: warning: format '%zu' expects argument of type 'size_t', but argument 3 has type 'int' [-Wformat=]
88 | pci_warn(dev, "failed VPD read at offset %zu\n",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:19:22: note: in definition of macro 'dev_fmt'
19 | #define dev_fmt(fmt) fmt
| ^~~
include/linux/pci.h:2465:37: note: in expansion of macro 'dev_warn'
2465 | #define pci_warn(pdev, fmt, arg...) dev_warn(&(pdev)->dev, fmt, ##arg)
| ^~~~~~~~
drivers/pci/vpd.c:88:5: note: in expansion of macro 'pci_warn'
88 | pci_warn(dev, "failed VPD read at offset %zu\n",
| ^~~~~~~~
drivers/pci/vpd.c:88:48: note: format string is defined here
88 | pci_warn(dev, "failed VPD read at offset %zu\n",
| ~~^
| |
| long unsigned int
| %u
In file included from include/linux/device.h:15,
from include/linux/pci.h:37,
from drivers/pci/vpd.c:8:
drivers/pci/vpd.c:88:19: warning: too many arguments for format [-Wformat-extra-args]
88 | pci_warn(dev, "failed VPD read at offset %zu\n",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:19:22: note: in definition of macro 'dev_fmt'
19 | #define dev_fmt(fmt) fmt
| ^~~
include/linux/pci.h:2465:37: note: in expansion of macro 'dev_warn'
2465 | #define pci_warn(pdev, fmt, arg...) dev_warn(&(pdev)->dev, fmt, ##arg)
| ^~~~~~~~
drivers/pci/vpd.c:88:5: note: in expansion of macro 'pci_warn'
88 | pci_warn(dev, "failed VPD read at offset %zu\n",
| ^~~~~~~~
vim +88 drivers/pci/vpd.c
b55ac1b22690d2 Matt Carlson 2010-02-26 @8 #include <linux/pci.h>
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 9 #include <linux/delay.h>
363c75db1d7bbd Paul Gortmaker 2011-05-27 10 #include <linux/export.h>
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 11 #include <linux/sched/signal.h>
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 12 #include "pci.h"
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 13
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 14 /* VPD access through PCI 2.2+ VPD capability */
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 15
f9ea894ca59a7a Bjorn Helgaas 2018-03-19 16 struct pci_vpd_ops {
f9ea894ca59a7a Bjorn Helgaas 2018-03-19 17 ssize_t (*read)(struct pci_dev *dev, loff_t pos, size_t count, void *buf);
f9ea894ca59a7a Bjorn Helgaas 2018-03-19 18 ssize_t (*write)(struct pci_dev *dev, loff_t pos, size_t count, const void *buf);
f9ea894ca59a7a Bjorn Helgaas 2018-03-19 19 };
f9ea894ca59a7a Bjorn Helgaas 2018-03-19 20
f9ea894ca59a7a Bjorn Helgaas 2018-03-19 21 struct pci_vpd {
f9ea894ca59a7a Bjorn Helgaas 2018-03-19 22 const struct pci_vpd_ops *ops;
f9ea894ca59a7a Bjorn Helgaas 2018-03-19 23 struct mutex lock;
f9ea894ca59a7a Bjorn Helgaas 2018-03-19 24 unsigned int len;
f9ea894ca59a7a Bjorn Helgaas 2018-03-19 25 u16 flag;
f9ea894ca59a7a Bjorn Helgaas 2018-03-19 26 u8 cap;
f9ea894ca59a7a Bjorn Helgaas 2018-03-19 27 unsigned int busy:1;
f9ea894ca59a7a Bjorn Helgaas 2018-03-19 28 unsigned int valid:1;
f9ea894ca59a7a Bjorn Helgaas 2018-03-19 29 };
f9ea894ca59a7a Bjorn Helgaas 2018-03-19 30
5881b38912f3f4 Heiner Kallweit 2021-04-16 31 static struct pci_dev *pci_get_func0_dev(struct pci_dev *dev)
5881b38912f3f4 Heiner Kallweit 2021-04-16 32 {
5881b38912f3f4 Heiner Kallweit 2021-04-16 33 return pci_get_slot(dev->bus, PCI_DEVFN(PCI_SLOT(dev->devfn), 0));
5881b38912f3f4 Heiner Kallweit 2021-04-16 34 }
5881b38912f3f4 Heiner Kallweit 2021-04-16 35
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 36 /**
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 37 * pci_read_vpd - Read one entry from Vital Product Data
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 38 * @dev: pci device struct
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 39 * @pos: offset in vpd space
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 40 * @count: number of bytes to read
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 41 * @buf: pointer to where to store result
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 42 */
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 43 ssize_t pci_read_vpd(struct pci_dev *dev, loff_t pos, size_t count, void *buf)
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 44 {
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 45 if (!dev->vpd || !dev->vpd->ops)
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 46 return -ENODEV;
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 47 return dev->vpd->ops->read(dev, pos, count, buf);
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 48 }
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 49 EXPORT_SYMBOL(pci_read_vpd);
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 50
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 51 /**
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 52 * pci_write_vpd - Write entry to Vital Product Data
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 53 * @dev: pci device struct
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 54 * @pos: offset in vpd space
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 55 * @count: number of bytes to write
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 56 * @buf: buffer containing write data
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 57 */
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 58 ssize_t pci_write_vpd(struct pci_dev *dev, loff_t pos, size_t count, const void *buf)
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 59 {
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 60 if (!dev->vpd || !dev->vpd->ops)
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 61 return -ENODEV;
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 62 return dev->vpd->ops->write(dev, pos, count, buf);
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 63 }
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 64 EXPORT_SYMBOL(pci_write_vpd);
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 65
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 66 #define PCI_VPD_MAX_SIZE (PCI_VPD_ADDR_MASK + 1)
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 67
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 68 /**
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 69 * pci_vpd_size - determine actual size of Vital Product Data
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 70 * @dev: pci device struct
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 71 * @old_size: current assumed size, also maximum allowed size
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 72 */
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 73 static size_t pci_vpd_size(struct pci_dev *dev, size_t old_size)
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 74 {
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 75 size_t off = 0;
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 76 unsigned char header[1+2]; /* 1 byte tag, 2 bytes length */
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 77
d1df5f3f4cfff8 Heiner Kallweit 2021-04-01 78 while (off < old_size && pci_read_vpd(dev, off, 1, header) == 1) {
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 79 unsigned char tag;
aa956bff1e1de2 Bjorn Helgaas 2021-07-15 80 size_t size;
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 81
4e0d77f8e831fc Heiner Kallweit 2021-07-29 82 if (off == 0 && (header[0] == 0x00 || header[0] == 0xff))
4e0d77f8e831fc Heiner Kallweit 2021-07-29 83 goto error;
d1df5f3f4cfff8 Heiner Kallweit 2021-04-01 84
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 85 if (header[0] & PCI_VPD_LRDT) {
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 86 /* Large Resource Data Type Tag */
49c5c306149806 Bjorn Helgaas 2021-07-15 87 if (pci_read_vpd(dev, off + 1, 2, &header[1]) != 2) {
e2cdd86b561719 Bjorn Helgaas 2021-07-15 @88 pci_warn(dev, "failed VPD read at offset %zu\n",
49c5c306149806 Bjorn Helgaas 2021-07-15 89 tag, off + 1);
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 90 return 0;
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 91 }
aa956bff1e1de2 Bjorn Helgaas 2021-07-15 92 size = pci_vpd_lrdt_size(header);
aa956bff1e1de2 Bjorn Helgaas 2021-07-15 93 if (off + size > PCI_VPD_MAX_SIZE)
aa956bff1e1de2 Bjorn Helgaas 2021-07-15 94 goto error;
aa956bff1e1de2 Bjorn Helgaas 2021-07-15 95
aa956bff1e1de2 Bjorn Helgaas 2021-07-15 96 off += PCI_VPD_LRDT_TAG_SIZE + size;
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 97 } else {
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 98 /* Short Resource Data Type Tag */
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 99 tag = pci_vpd_srdt_tag(header);
aa956bff1e1de2 Bjorn Helgaas 2021-07-15 100 size = pci_vpd_srdt_size(header);
aa956bff1e1de2 Bjorn Helgaas 2021-07-15 101 if (size == 0 || off + size > PCI_VPD_MAX_SIZE)
aa956bff1e1de2 Bjorn Helgaas 2021-07-15 102 goto error;
aa956bff1e1de2 Bjorn Helgaas 2021-07-15 103
aa956bff1e1de2 Bjorn Helgaas 2021-07-15 104 off += PCI_VPD_SRDT_TAG_SIZE + size;
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 105 if (tag == PCI_VPD_STIN_END) /* End tag descriptor */
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 106 return off;
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 107 }
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 108 }
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 109 return 0;
4e0d77f8e831fc Heiner Kallweit 2021-07-29 110
4e0d77f8e831fc Heiner Kallweit 2021-07-29 111 error:
4e0d77f8e831fc Heiner Kallweit 2021-07-29 112 pci_info(dev, "invalid VPD tag %#04x at offset %zu%s\n",
4e0d77f8e831fc Heiner Kallweit 2021-07-29 113 header[0], off, off == 0 ?
4e0d77f8e831fc Heiner Kallweit 2021-07-29 114 "; assume missing optional EEPROM" : "");
4e0d77f8e831fc Heiner Kallweit 2021-07-29 115 return 0;
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 116 }
f0eb77ae6b857b Bjorn Helgaas 2018-03-19 117
:::::: The code at line 88 was first introduced by commit
:::::: e2cdd86b561719da9ac928635f2a55b370dbb5b1 PCI/VPD: Correct diagnostic for VPD read failure
:::::: TO: Bjorn Helgaas <bhelgaas@google.com>
:::::: CC: Bjorn Helgaas <bhelgaas@google.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 40732 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-07-30 21:41 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-30 21:40 [pci:wip/bjorn-vpd-v2 5/9] drivers/pci/vpd.c:88:19: warning: format '%zu' expects argument of type 'size_t', but argument 3 has type 'int' kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).