arch/x86/events/intel/uncore_snbep.c:4394 __snr_uncore_mmio_init_box() warn: should '(pci_dword & 536870911) << 23' be a 64 bit type?

From: Dan Carpenter
Date: Tue Jun 02 2020 - 06:43:52 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 3d77e6a8804abcc0504c904bd6e5cdf3a5cf8162
commit: 3442a9ecb8e72a33c28a2b969b766c659830e410 perf/x86/intel/uncore: Factor out __snr_uncore_mmio_init_box
date: 2 months ago
config: x86_64-randconfig-m001-20200601 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@xxxxxxxxx>
Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>

smatch warnings:
arch/x86/events/intel/uncore_snbep.c:4394 __snr_uncore_mmio_init_box() warn: should '(pci_dword & 536870911) << 23' be a 64 bit type?

# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3442a9ecb8e72a33c28a2b969b766c659830e410
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git remote update linus
git checkout 3442a9ecb8e72a33c28a2b969b766c659830e410
vim +4394 arch/x86/events/intel/uncore_snbep.c

3442a9ecb8e72a Kan Liang 2020-03-17 4383 static void __snr_uncore_mmio_init_box(struct intel_uncore_box *box,
3442a9ecb8e72a Kan Liang 2020-03-17 4384 unsigned int box_ctl, int mem_offset)
ee49532b38dd08 Kan Liang 2019-04-30 4385 {
ee49532b38dd08 Kan Liang 2019-04-30 4386 struct pci_dev *pdev = snr_uncore_get_mc_dev(box->dieid);
ee49532b38dd08 Kan Liang 2019-04-30 4387 resource_size_t addr;
ee49532b38dd08 Kan Liang 2019-04-30 4388 u32 pci_dword;
ee49532b38dd08 Kan Liang 2019-04-30 4389
ee49532b38dd08 Kan Liang 2019-04-30 4390 if (!pdev)
ee49532b38dd08 Kan Liang 2019-04-30 4391 return;
ee49532b38dd08 Kan Liang 2019-04-30 4392
ee49532b38dd08 Kan Liang 2019-04-30 4393 pci_read_config_dword(pdev, SNR_IMC_MMIO_BASE_OFFSET, &pci_dword);
ee49532b38dd08 Kan Liang 2019-04-30 @4394 addr = (pci_dword & SNR_IMC_MMIO_BASE_MASK) << 23;
^^^^^^^^^^^^^^^^^^^^^^
This check has a pretty high false positive rate because "pci_dword"
is unknowable but obviously SNR_IMC_MMIO_BASE_MASK << 23 is undefined.

ee49532b38dd08 Kan Liang 2019-04-30 4395
3442a9ecb8e72a Kan Liang 2020-03-17 4396 pci_read_config_dword(pdev, mem_offset, &pci_dword);
ee49532b38dd08 Kan Liang 2019-04-30 4397 addr |= (pci_dword & SNR_IMC_MMIO_MEM0_MASK) << 12;
ee49532b38dd08 Kan Liang 2019-04-30 4398
ee49532b38dd08 Kan Liang 2019-04-30 4399 addr += box_ctl;
ee49532b38dd08 Kan Liang 2019-04-30 4400
ee49532b38dd08 Kan Liang 2019-04-30 4401 box->io_addr = ioremap(addr, SNR_IMC_MMIO_SIZE);
ee49532b38dd08 Kan Liang 2019-04-30 4402 if (!box->io_addr)
ee49532b38dd08 Kan Liang 2019-04-30 4403 return;
ee49532b38dd08 Kan Liang 2019-04-30 4404
ee49532b38dd08 Kan Liang 2019-04-30 4405 writel(IVBEP_PMON_BOX_CTL_INT, box->io_addr);
ee49532b38dd08 Kan Liang 2019-04-30 4406 }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip