CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Ricardo Koller <[email protected]>
CC: Marc Zyngier <[email protected]>
CC: Eric Auger <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   018ab4fabddd94f1c96f3b59e180691b9e88d5d8
commit: 4612d98f58c73ad63928200fd332f75c8e524dae KVM: arm64: vgic-v3: Check 
redist region is not above the VM IPA size
date:   8 months ago
:::::: branch date: 23 hours ago
:::::: commit date: 8 months ago
config: arm64-randconfig-m031-20220615 
(https://download.01.org/0day-ci/archive/20220616/[email protected]/config)
compiler: aarch64-linux-gcc (GCC) 11.3.0

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

smatch warnings:
arch/arm64/kvm/vgic/vgic-mmio-v3.c:800 vgic_v3_alloc_redist_region() warn: 
check sign expansion for 'nr_vcpus * (2 * 65536)'

vim +800 arch/arm64/kvm/vgic/vgic-mmio-v3.c

621ecd8d2123bc virt/kvm/arm/vgic/vgic-mmio-v3.c   Andre Przywara   2016-01-26  
777  
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
778  /**
e5a35635464bc5 arch/arm64/kvm/vgic/vgic-mmio-v3.c Eric Auger       2021-04-05  
779   * vgic_v3_alloc_redist_region - Allocate a new redistributor region
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
780   *
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
781   * Performs various checks before inserting the rdist region in the list.
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
782   * Those tests depend on whether the size of the rdist region is known
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
783   * (ie. count != 0). The list is sorted by rdist region index.
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
784   *
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
785   * @kvm: kvm handle
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
786   * @index: redist region index
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
787   * @base: base of the new rdist region
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
788   * @count: number of redistributors the region is made of (0 in the old 
style
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
789   * single region, whose size is induced from the number of vcpus)
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
790   *
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
791   * Return 0 on success, < 0 otherwise
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
792   */
e5a35635464bc5 arch/arm64/kvm/vgic/vgic-mmio-v3.c Eric Auger       2021-04-05  
793  static int vgic_v3_alloc_redist_region(struct kvm *kvm, uint32_t index,
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
794                                     gpa_t base, uint32_t count)
1aab6f468c10a1 virt/kvm/arm/vgic/vgic-mmio-v3.c   Christoffer Dall 2017-05-08  
795  {
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
796      struct vgic_dist *d = &kvm->arch.vgic;
dbd9733ab6742d virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
797      struct vgic_redist_region *rdreg;
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
798      struct list_head *rd_regions = &d->rd_regions;
4612d98f58c73a arch/arm64/kvm/vgic/vgic-mmio-v3.c Ricardo Koller   2021-10-04  
799      int nr_vcpus = atomic_read(&kvm->online_vcpus);
4612d98f58c73a arch/arm64/kvm/vgic/vgic-mmio-v3.c Ricardo Koller   2021-10-04 
@800      size_t size = count ? count * KVM_VGIC_V3_REDIST_SIZE
4612d98f58c73a arch/arm64/kvm/vgic/vgic-mmio-v3.c Ricardo Koller   2021-10-04  
801                          : nr_vcpus * KVM_VGIC_V3_REDIST_SIZE;
1aab6f468c10a1 virt/kvm/arm/vgic/vgic-mmio-v3.c   Christoffer Dall 2017-05-08  
802      int ret;
1aab6f468c10a1 virt/kvm/arm/vgic/vgic-mmio-v3.c   Christoffer Dall 2017-05-08  
803  
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
804      /* cross the end of memory ? */
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
805      if (base + size < base)
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
806              return -EINVAL;
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
807  
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
808      if (list_empty(rd_regions)) {
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
809              if (index != 0)
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
810                      return -EINVAL;
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
811      } else {
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
812              rdreg = list_last_entry(rd_regions,
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
813                                      struct vgic_redist_region, list);
d9b201e99c6160 arch/arm64/kvm/vgic/vgic-mmio-v3.c Eric Auger       2021-04-05  
814  
d9b201e99c6160 arch/arm64/kvm/vgic/vgic-mmio-v3.c Eric Auger       2021-04-05  
815              /* Don't mix single region and discrete redist regions */
d9b201e99c6160 arch/arm64/kvm/vgic/vgic-mmio-v3.c Eric Auger       2021-04-05  
816              if (!count && rdreg->count)
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
817                      return -EINVAL;
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
818  
d9b201e99c6160 arch/arm64/kvm/vgic/vgic-mmio-v3.c Eric Auger       2021-04-05  
819              if (!count)
d9b201e99c6160 arch/arm64/kvm/vgic/vgic-mmio-v3.c Eric Auger       2021-04-05  
820                      return -EEXIST;
d9b201e99c6160 arch/arm64/kvm/vgic/vgic-mmio-v3.c Eric Auger       2021-04-05  
821  
d9b201e99c6160 arch/arm64/kvm/vgic/vgic-mmio-v3.c Eric Auger       2021-04-05  
822              if (index != rdreg->index + 1)
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
823                      return -EINVAL;
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
824      }
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
825  
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
826      /*
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
827       * For legacy single-region redistributor regions (!count),
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
828       * check that the redistributor region does not overlap with the
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
829       * distributor's address space.
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
830       */
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
831      if (!count && !IS_VGIC_ADDR_UNDEF(d->vgic_dist_base) &&
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
832              vgic_dist_overlap(kvm, base, size))
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
833              return -EINVAL;
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
834  
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
835      /* collision with any other rdist region? */
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
836      if (vgic_v3_rdist_overlap(kvm, base, size))
dbd9733ab6742d virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
837              return -EINVAL;
dbd9733ab6742d virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
838  
dbd9733ab6742d virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
839      rdreg = kzalloc(sizeof(*rdreg), GFP_KERNEL);
dbd9733ab6742d virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
840      if (!rdreg)
dbd9733ab6742d virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
841              return -ENOMEM;
dbd9733ab6742d virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
842  
dbd9733ab6742d virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
843      rdreg->base = VGIC_ADDR_UNDEF;
dbd9733ab6742d virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
844  
4612d98f58c73a arch/arm64/kvm/vgic/vgic-mmio-v3.c Ricardo Koller   2021-10-04  
845      ret = vgic_check_iorange(kvm, rdreg->base, base, SZ_64K, size);
1aab6f468c10a1 virt/kvm/arm/vgic/vgic-mmio-v3.c   Christoffer Dall 2017-05-08  
846      if (ret)
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
847              goto free;
1aab6f468c10a1 virt/kvm/arm/vgic/vgic-mmio-v3.c   Christoffer Dall 2017-05-08  
848  
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
849      rdreg->base = base;
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
850      rdreg->count = count;
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
851      rdreg->free_index = 0;
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
852      rdreg->index = index;
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
853  
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
854      list_add_tail(&rdreg->list, rd_regions);
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
855      return 0;
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
856  free:
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
857      kfree(rdreg);
ccc27bf5be7b78 virt/kvm/arm/vgic/vgic-mmio-v3.c   Eric Auger       2018-05-22  
858      return ret;
1aab6f468c10a1 virt/kvm/arm/vgic/vgic-mmio-v3.c   Christoffer Dall 2017-05-08  
859  }
1aab6f468c10a1 virt/kvm/arm/vgic/vgic-mmio-v3.c   Christoffer Dall 2017-05-08  
860  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to