drivers/net/ethernet/amd/pds_core/dev.c:257:22: warning: '%s' directive output may be truncated writing up to 64 bytes into a region of size 23

From: kernel test robot
Date: Sat Oct 21 2023 - 05:21:14 EST


Hi Shannon,

First bad commit (maybe != root cause):

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 9c5d00cb7b6bbc5a7965d9ab7d223b5402d1f02c
commit: ddbcb22055d136f58841c73ca2226dab79eb6101 pds_core: Kconfig and pds_core.rst
date: 6 months ago
config: x86_64-randconfig-r031-20230608 (https://download.01.org/0day-ci/archive/20231021/202310211736.66syyDpp-lkp@xxxxxxxxx/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231021/202310211736.66syyDpp-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202310211736.66syyDpp-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

drivers/net/ethernet/amd/pds_core/dev.c: In function 'pdsc_identify':
>> drivers/net/ethernet/amd/pds_core/dev.c:257:22: warning: '%s' directive output may be truncated writing up to 64 bytes into a region of size 23 [-Wformat-truncation=]
257 | "%s %s", PDS_CORE_DRV_NAME, utsname()->release);
| ^~
drivers/net/ethernet/amd/pds_core/dev.c:256:9: note: 'snprintf' output between 10 and 74 bytes into a destination of size 32
256 | snprintf(drv.driver_ver_str, sizeof(drv.driver_ver_str),
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
257 | "%s %s", PDS_CORE_DRV_NAME, utsname()->release);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
drivers/net/ethernet/amd/pds_core/core.c: In function 'pdsc_qcq_alloc':
>> drivers/net/ethernet/amd/pds_core/core.c:126:45: warning: '%s' directive output may be truncated writing up to 31 bytes into a region of size between 19 and 21 [-Wformat-truncation=]
126 | snprintf(name, sizeof(name), "%s-%d-%s",
| ^~
In function 'pdsc_qcq_intr_alloc',
inlined from 'pdsc_qcq_alloc' at drivers/net/ethernet/amd/pds_core/core.c:218:8:
drivers/net/ethernet/amd/pds_core/core.c:126:9: note: 'snprintf' output between 12 and 45 bytes into a destination of size 32
126 | snprintf(name, sizeof(name), "%s-%d-%s",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
127 | PDS_CORE_DRV_NAME, pdsc->pdev->bus->number, qcq->q.name);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +257 drivers/net/ethernet/amd/pds_core/dev.c

523847df1b3718 Shannon Nelson 2023-04-19 248
523847df1b3718 Shannon Nelson 2023-04-19 249 static int pdsc_identify(struct pdsc *pdsc)
523847df1b3718 Shannon Nelson 2023-04-19 250 {
523847df1b3718 Shannon Nelson 2023-04-19 251 struct pds_core_drv_identity drv = {};
523847df1b3718 Shannon Nelson 2023-04-19 252 size_t sz;
523847df1b3718 Shannon Nelson 2023-04-19 253 int err;
523847df1b3718 Shannon Nelson 2023-04-19 254
523847df1b3718 Shannon Nelson 2023-04-19 255 drv.drv_type = cpu_to_le32(PDS_DRIVER_LINUX);
523847df1b3718 Shannon Nelson 2023-04-19 256 snprintf(drv.driver_ver_str, sizeof(drv.driver_ver_str),
523847df1b3718 Shannon Nelson 2023-04-19 @257 "%s %s", PDS_CORE_DRV_NAME, utsname()->release);
523847df1b3718 Shannon Nelson 2023-04-19 258
523847df1b3718 Shannon Nelson 2023-04-19 259 /* Next let's get some info about the device
523847df1b3718 Shannon Nelson 2023-04-19 260 * We use the devcmd_lock at this level in order to
523847df1b3718 Shannon Nelson 2023-04-19 261 * get safe access to the cmd_regs->data before anyone
523847df1b3718 Shannon Nelson 2023-04-19 262 * else can mess it up
523847df1b3718 Shannon Nelson 2023-04-19 263 */
523847df1b3718 Shannon Nelson 2023-04-19 264 mutex_lock(&pdsc->devcmd_lock);
523847df1b3718 Shannon Nelson 2023-04-19 265
523847df1b3718 Shannon Nelson 2023-04-19 266 sz = min_t(size_t, sizeof(drv), sizeof(pdsc->cmd_regs->data));
523847df1b3718 Shannon Nelson 2023-04-19 267 memcpy_toio(&pdsc->cmd_regs->data, &drv, sz);
523847df1b3718 Shannon Nelson 2023-04-19 268
523847df1b3718 Shannon Nelson 2023-04-19 269 err = pdsc_devcmd_identify_locked(pdsc);
523847df1b3718 Shannon Nelson 2023-04-19 270 if (!err) {
523847df1b3718 Shannon Nelson 2023-04-19 271 sz = min_t(size_t, sizeof(pdsc->dev_ident),
523847df1b3718 Shannon Nelson 2023-04-19 272 sizeof(pdsc->cmd_regs->data));
523847df1b3718 Shannon Nelson 2023-04-19 273 memcpy_fromio(&pdsc->dev_ident, &pdsc->cmd_regs->data, sz);
523847df1b3718 Shannon Nelson 2023-04-19 274 }
523847df1b3718 Shannon Nelson 2023-04-19 275 mutex_unlock(&pdsc->devcmd_lock);
523847df1b3718 Shannon Nelson 2023-04-19 276
523847df1b3718 Shannon Nelson 2023-04-19 277 if (err) {
523847df1b3718 Shannon Nelson 2023-04-19 278 dev_err(pdsc->dev, "Cannot identify device: %pe\n",
523847df1b3718 Shannon Nelson 2023-04-19 279 ERR_PTR(err));
523847df1b3718 Shannon Nelson 2023-04-19 280 return err;
523847df1b3718 Shannon Nelson 2023-04-19 281 }
523847df1b3718 Shannon Nelson 2023-04-19 282
523847df1b3718 Shannon Nelson 2023-04-19 283 if (isprint(pdsc->dev_info.fw_version[0]) &&
523847df1b3718 Shannon Nelson 2023-04-19 284 isascii(pdsc->dev_info.fw_version[0]))
523847df1b3718 Shannon Nelson 2023-04-19 285 dev_info(pdsc->dev, "FW: %.*s\n",
523847df1b3718 Shannon Nelson 2023-04-19 286 (int)(sizeof(pdsc->dev_info.fw_version) - 1),
523847df1b3718 Shannon Nelson 2023-04-19 287 pdsc->dev_info.fw_version);
523847df1b3718 Shannon Nelson 2023-04-19 288 else
523847df1b3718 Shannon Nelson 2023-04-19 289 dev_info(pdsc->dev, "FW: (invalid string) 0x%02x 0x%02x 0x%02x 0x%02x ...\n",
523847df1b3718 Shannon Nelson 2023-04-19 290 (u8)pdsc->dev_info.fw_version[0],
523847df1b3718 Shannon Nelson 2023-04-19 291 (u8)pdsc->dev_info.fw_version[1],
523847df1b3718 Shannon Nelson 2023-04-19 292 (u8)pdsc->dev_info.fw_version[2],
523847df1b3718 Shannon Nelson 2023-04-19 293 (u8)pdsc->dev_info.fw_version[3]);
523847df1b3718 Shannon Nelson 2023-04-19 294
523847df1b3718 Shannon Nelson 2023-04-19 295 return 0;
523847df1b3718 Shannon Nelson 2023-04-19 296 }
523847df1b3718 Shannon Nelson 2023-04-19 297

:::::: The code at line 257 was first introduced by commit
:::::: 523847df1b3718d6286dce0ed1c83742fe0ffa94 pds_core: add devcmd device interfaces

:::::: TO: Shannon Nelson <shannon.nelson@xxxxxxx>
:::::: CC: David S. Miller <davem@xxxxxxxxxxxxx>

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki