Re: [kvm:queue 63/66] arch/arm/kvm/../../../virt/kvm/arm/mmio.c:115:11: warning: passing argument 4 of 'trace_kvm_mmio' makes pointer from integer without a cast

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2017-12-17 10:01 GMT+08:00 kbuild test robot <fengguang.wu@xxxxxxxxx>:
> tree:   https://git.kernel.org/pub/scm/virt/kvm/kvm.git queue
> head:   3d9455d0943947d96caca05da7f5a3da68f3d42b
> commit: 45eee3200ba5973f579fff50afbde38884fd3ea5 [63/66] KVM: X86: Fix stack-out-of-bounds read in write_mmio
> config: arm-axm55xx_defconfig (attached as .config)
> compiler: arm-linux-gnueabi-gcc (Debian 7.2.0-11) 7.2.0
> reproduce:
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         git checkout 45eee3200ba5973f579fff50afbde38884fd3ea5
>         # save the attached .config to linux build tree
>         make.cross ARCH=arm

It is fixed in v4. https://lkml.org/lkml/2017/12/14/954

Regards,
Wanpeng Li

>
> All warnings (new ones prefixed by >>):
>
>    arch/arm/kvm/../../../virt/kvm/arm/mmio.c: In function 'kvm_handle_mmio_return':
>>> arch/arm/kvm/../../../virt/kvm/arm/mmio.c:115:11: warning: passing argument 4 of 'trace_kvm_mmio' makes pointer from integer without a cast [-Wint-conversion]
>               data);
>               ^~~~
>    In file included from include/trace/events/kvm.h:5:0,
>                     from arch/arm/kvm/../../../virt/kvm/arm/mmio.c:22:
>    include/linux/tracepoint.h:256:21: note: expected 'void *' but argument is of type 'long unsigned int'
>      static inline void trace_##name(proto)    \
>                         ^
>    include/linux/tracepoint.h:352:2: note: in expansion of macro '__DECLARE_TRACE'
>      __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args),  \
>      ^~~~~~~~~~~~~~~
>    include/linux/tracepoint.h:488:2: note: in expansion of macro 'DECLARE_TRACE'
>      DECLARE_TRACE(name, PARAMS(proto), PARAMS(args))
>      ^~~~~~~~~~~~~
>    include/trace/events/kvm.h:213:1: note: in expansion of macro 'TRACE_EVENT'
>     TRACE_EVENT(kvm_mmio,
>     ^~~~~~~~~~~
>    arch/arm/kvm/../../../virt/kvm/arm/mmio.c: In function 'io_mem_abort':
>    arch/arm/kvm/../../../virt/kvm/arm/mmio.c:185:56: warning: passing argument 4 of 'trace_kvm_mmio' makes pointer from integer without a cast [-Wint-conversion]
>       trace_kvm_mmio(KVM_TRACE_MMIO_WRITE, len, fault_ipa, data);
>                                                            ^~~~
>    In file included from include/trace/events/kvm.h:5:0,
>                     from arch/arm/kvm/../../../virt/kvm/arm/mmio.c:22:
>    include/linux/tracepoint.h:256:21: note: expected 'void *' but argument is of type 'long unsigned int'
>      static inline void trace_##name(proto)    \
>                         ^
>    include/linux/tracepoint.h:352:2: note: in expansion of macro '__DECLARE_TRACE'
>      __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args),  \
>      ^~~~~~~~~~~~~~~
>    include/linux/tracepoint.h:488:2: note: in expansion of macro 'DECLARE_TRACE'
>      DECLARE_TRACE(name, PARAMS(proto), PARAMS(args))
>      ^~~~~~~~~~~~~
>    include/trace/events/kvm.h:213:1: note: in expansion of macro 'TRACE_EVENT'
>     TRACE_EVENT(kvm_mmio,
>     ^~~~~~~~~~~
>
> vim +/trace_kvm_mmio +115 arch/arm/kvm/../../../virt/kvm/arm/mmio.c
>
> 6d89d2d9b arch/arm/kvm/mmio.c Marc Zyngier     2013-02-12   87
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20   88  /**
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20   89   * kvm_handle_mmio_return -- Handle MMIO loads after user space emulation
> 83091db98 arch/arm/kvm/mmio.c Christoffer Dall 2016-03-29   90   *                           or in-kernel IO emulation
> 83091db98 arch/arm/kvm/mmio.c Christoffer Dall 2016-03-29   91   *
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20   92   * @vcpu: The VCPU pointer
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20   93   * @run:  The VCPU run struct containing the mmio data
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20   94   */
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20   95  int kvm_handle_mmio_return(struct kvm_vcpu *vcpu, struct kvm_run *run)
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20   96  {
> 6d89d2d9b arch/arm/kvm/mmio.c Marc Zyngier     2013-02-12   97          unsigned long data;
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20   98          unsigned int len;
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20   99          int mask;
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20  100
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20  101          if (!run->mmio.is_write) {
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20  102                  len = run->mmio.len;
> f42798c68 arch/arm/kvm/mmio.c Marc Zyngier     2013-03-05  103                  if (len > sizeof(unsigned long))
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20  104                          return -EINVAL;
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20  105
> d5a5a0eff arch/arm/kvm/mmio.c Christoffer Dall 2016-04-24  106                  data = kvm_mmio_read_buf(run->mmio.data, len);
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20  107
> f42798c68 arch/arm/kvm/mmio.c Marc Zyngier     2013-03-05  108                  if (vcpu->arch.mmio_decode.sign_extend &&
> f42798c68 arch/arm/kvm/mmio.c Marc Zyngier     2013-03-05  109                      len < sizeof(unsigned long)) {
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20  110                          mask = 1U << ((len * 8) - 1);
> 6d89d2d9b arch/arm/kvm/mmio.c Marc Zyngier     2013-02-12  111                          data = (data ^ mask) - mask;
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20  112                  }
> 6d89d2d9b arch/arm/kvm/mmio.c Marc Zyngier     2013-02-12  113
> 6d89d2d9b arch/arm/kvm/mmio.c Marc Zyngier     2013-02-12  114                  trace_kvm_mmio(KVM_TRACE_MMIO_READ, len, run->mmio.phys_addr,
> 6d89d2d9b arch/arm/kvm/mmio.c Marc Zyngier     2013-02-12 @115                                 data);
> 6d89d2d9b arch/arm/kvm/mmio.c Marc Zyngier     2013-02-12  116                  data = vcpu_data_host_to_guest(vcpu, data, len);
> bc45a516f arch/arm/kvm/mmio.c Pavel Fedin      2015-12-04  117                  vcpu_set_reg(vcpu, vcpu->arch.mmio_decode.rt, data);
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20  118          }
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20  119
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20  120          return 0;
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20  121  }
> 45e96ea6b arch/arm/kvm/mmio.c Christoffer Dall 2013-01-20  122
>
> :::::: The code at line 115 was first introduced by commit
> :::::: 6d89d2d9b5bac9dbe40ee106ceda9307b6265234 arm/arm64: KVM: MMIO support for BE guest
>
> :::::: TO: Marc Zyngier <marc.zyngier@xxxxxxx>
> :::::: CC: Marc Zyngier <marc.zyngier@xxxxxxx>
>
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux