Skip to contentSkip to conversation

arch/arm64/kvm/vgic/vgic-v5-tables.c:962:34: sparse: sparse: Using plain integer as NULL pointer

PATCH kernel test robot 1 participant 1 message Sep 19

lore
Share & tools
lore

kernel test robot

author build bot
#0 lore raw
tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   3f2425f5b5bbbdd991ca9cdfd5502e68d8895998
commit: 77f7a9282fee67180134e75b107ff09d7e1a5876 [5532/8449] KVM: arm64: gic-v5: Introduce guest IST alloc and management
config: arm64-randconfig-r1307-20260918 (https://download.01.org/0day-ci/archive/20260919/[email protected]/config)
compiler: clang version 24.0.0git (https://github.com/llvm/llvm-project 7252edd9aa82ef1c570ff6694ef7f4763a8a5d2f)
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260919/[email protected]/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 <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

sparse warnings: (new ones prefixed by >>)
arch/arm64/kvm/vgic/vgic-v5-tables.c:464:31: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __iomem *vmd_base @@ got void *[assigned] vmd @@
arch/arm64/kvm/vgic/vgic-v5-tables.c:464:31: sparse: expected void [noderef] __iomem *vmd_base
arch/arm64/kvm/vgic/vgic-v5-tables.c:464:31: sparse: got void *[assigned] vmd
arch/arm64/kvm/vgic/vgic-v5-tables.c:505:24: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected restricted __le64 [noderef] [usertype] __iomem *vpet_base @@ got restricted __le64 [usertype] *[assigned] vpet @@
arch/arm64/kvm/vgic/vgic-v5-tables.c:505:24: sparse: expected restricted __le64 [noderef] [usertype] __iomem *vpet_base
arch/arm64/kvm/vgic/vgic-v5-tables.c:505:24: sparse: got restricted __le64 [usertype] *[assigned] vpet

>> arch/arm64/kvm/vgic/vgic-v5-tables.c:962:34: sparse: sparse: Using plain integer as NULL pointer

arch/arm64/kvm/vgic/vgic-v5-tables.c:628:18: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const *objp @@ got restricted __le64 [noderef] [usertype] __iomem *vpet_base @@
arch/arm64/kvm/vgic/vgic-v5-tables.c:628:18: sparse: expected void const *objp
arch/arm64/kvm/vgic/vgic-v5-tables.c:628:18: sparse: got restricted __le64 [noderef] [usertype] __iomem *vpet_base
arch/arm64/kvm/vgic/vgic-v5-tables.c:629:18: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const *objp @@ got void [noderef] __iomem *vmd_base @@
arch/arm64/kvm/vgic/vgic-v5-tables.c:629:18: sparse: expected void const *objp
arch/arm64/kvm/vgic/vgic-v5-tables.c:629:18: sparse: got void [noderef] __iomem *vmd_base
arch/arm64/kvm/vgic/vgic-v5-tables.c:669:19: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected restricted __le64 [usertype] *vpet_base @@ got restricted __le64 [noderef] [usertype] __iomem *vpet_base @@
arch/arm64/kvm/vgic/vgic-v5-tables.c:669:19: sparse: expected restricted __le64 [usertype] *vpet_base
arch/arm64/kvm/vgic/vgic-v5-tables.c:669:19: sparse: got restricted __le64 [noderef] [usertype] __iomem *vpet_base
arch/arm64/kvm/vgic/vgic-v5-tables.c:681:13: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le64 [usertype] tmp @@ got unsigned long long @@
arch/arm64/kvm/vgic/vgic-v5-tables.c:681:13: sparse: expected restricted __le64 [usertype] tmp
arch/arm64/kvm/vgic/vgic-v5-tables.c:681:13: sparse: got unsigned long long
arch/arm64/kvm/vgic/vgic-v5-tables.c:684:17: sparse: sparse: cast from restricted __le64
arch/arm64/kvm/vgic/vgic-v5-tables.c:717:19: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected restricted __le64 [usertype] *vpet_base @@ got restricted __le64 [noderef] [usertype] __iomem *vpet_base @@
arch/arm64/kvm/vgic/vgic-v5-tables.c:717:19: sparse: expected restricted __le64 [usertype] *vpet_base
arch/arm64/kvm/vgic/vgic-v5-tables.c:717:19: sparse: got restricted __le64 [noderef] [usertype] __iomem *vpet_base

vim +962 arch/arm64/kvm/vgic/vgic-v5-tables.c

938
939 /* Allocate a two-level IST - LPIs, only */
940 static int vgic_v5_alloc_two_level_lpi_ist(struct kvm *kvm, unsigned int id_bits,
941 unsigned int istsz, unsigned int l2sz)
942 {
943 u32 vm_id = vgic_v5_vm_id(kvm);
944 struct vgic_v5_vm_info *vmi;
945 int ret;
946
947 /*
948 * Allocate the L1 IST first, then all of the L2s. Everything
949 * is preallocated and we do no on-demand IST allocation. This
950 * is to avoid needing to track if and when the guest is doing
951 * on-demand IST allocation.
952 */
953 ret = vgic_v5_alloc_l1_ist(kvm, id_bits, istsz, l2sz);
954 if (ret)
955 return ret;
956
957 ret = vgic_v5_alloc_l2_ists(kvm, id_bits, istsz, l2sz);
958 if (ret) {
959 /* Free the L1 IST again */
960 vmi = xa_load(&vm_info, vm_id);
961 kfree(vmi->h_lpi_ist);

 > 962			vmi->h_lpi_ist = 0;

963
964 return ret;
965 }
966
967 return 0;
968 }
969

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