Re: [PATCH v10 05/10] x86: spp: Introduce user-space SPP IOCTLs (fwd)
by Julia Lawall
See lines 5185 and 5186.
julia
---------- Forwarded message ----------
Date: Wed, 1 Jan 2020 14:03:47 +0800
From: kbuild test robot <lkp(a)intel.com>
To: kbuild(a)lists.01.org
Cc: Julia Lawall <julia.lawall(a)lip6.fr>
Subject: Re: [PATCH v10 05/10] x86: spp: Introduce user-space SPP IOCTLs
CC: kbuild-all(a)lists.01.org
In-Reply-To: <20191231065043.2209-6-weijiang.yang(a)intel.com>
References: <20191231065043.2209-6-weijiang.yang(a)intel.com>
TO: Yang Weijiang <weijiang.yang(a)intel.com>
CC: kvm(a)vger.kernel.org, linux-kernel(a)vger.kernel.org, pbonzini(a)redhat.com, jmattson(a)google.com, sean.j.christopherson(a)intel.com
CC: yu.c.zhang(a)linux.intel.com, alazar(a)bitdefender.com, edwin.zhai(a)intel.com, Yang Weijiang <weijiang.yang(a)intel.com>
Hi Yang,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on kvm/linux-next]
[also build test WARNING on vhost/linux-next tip/auto-latest linux/master linus/master v5.5-rc4 next-20191220]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Yang-Weijiang/Enable-Sub-Page-Wr...
base: https://git.kernel.org/pub/scm/virt/kvm/kvm.git linux-next
:::::: branch date: 23 hours ago
:::::: commit date: 23 hours ago
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp(a)intel.com>
Reported-by: Julia Lawall <julia.lawall(a)lip6.fr>
>> arch/x86/kvm/x86.c:5186:6-11: ERROR: reference preceded by free on line 5185
# https://github.com/0day-ci/linux/commit/148f2ec985f4ef45bcde3f5a787394f23...
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout 148f2ec985f4ef45bcde3f5a787394f23a18e800
vim +5186 arch/x86/kvm/x86.c
90de4a1875180f arch/x86/kvm/x86.c Nadav Amit 2015-04-13 4844
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4845 long kvm_arch_vm_ioctl(struct file *filp,
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4846 unsigned int ioctl, unsigned long arg)
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4847 {
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4848 struct kvm *kvm = filp->private_data;
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4849 void __user *argp = (void __user *)arg;
367e1319b22911 arch/x86/kvm/x86.c Avi Kivity 2009-08-26 4850 int r = -ENOTTY;
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4851 /*
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4852 * This union makes it completely explicit to gcc-3.x
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4853 * that these two variables' stack usage should be
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4854 * combined, not added together.
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4855 */
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4856 union {
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4857 struct kvm_pit_state ps;
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 4858 struct kvm_pit_state2 ps2;
c5ff41ce66382d arch/x86/kvm/x86.c Jan Kiszka 2009-05-14 4859 struct kvm_pit_config pit_config;
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4860 } u;
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4861
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4862 switch (ioctl) {
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4863 case KVM_SET_TSS_ADDR:
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4864 r = kvm_vm_ioctl_set_tss_addr(kvm, arg);
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4865 break;
b927a3cec081a6 arch/x86/kvm/x86.c Sheng Yang 2009-07-21 4866 case KVM_SET_IDENTITY_MAP_ADDR: {
b927a3cec081a6 arch/x86/kvm/x86.c Sheng Yang 2009-07-21 4867 u64 ident_addr;
b927a3cec081a6 arch/x86/kvm/x86.c Sheng Yang 2009-07-21 4868
1af1ac910bb339 arch/x86/kvm/x86.c David Hildenbrand 2017-08-24 4869 mutex_lock(&kvm->lock);
1af1ac910bb339 arch/x86/kvm/x86.c David Hildenbrand 2017-08-24 4870 r = -EINVAL;
1af1ac910bb339 arch/x86/kvm/x86.c David Hildenbrand 2017-08-24 4871 if (kvm->created_vcpus)
1af1ac910bb339 arch/x86/kvm/x86.c David Hildenbrand 2017-08-24 4872 goto set_identity_unlock;
b927a3cec081a6 arch/x86/kvm/x86.c Sheng Yang 2009-07-21 4873 r = -EFAULT;
0e96f31ea4249b arch/x86/kvm/x86.c Jordan Borgner 2018-10-28 4874 if (copy_from_user(&ident_addr, argp, sizeof(ident_addr)))
1af1ac910bb339 arch/x86/kvm/x86.c David Hildenbrand 2017-08-24 4875 goto set_identity_unlock;
b927a3cec081a6 arch/x86/kvm/x86.c Sheng Yang 2009-07-21 4876 r = kvm_vm_ioctl_set_identity_map_addr(kvm, ident_addr);
1af1ac910bb339 arch/x86/kvm/x86.c David Hildenbrand 2017-08-24 4877 set_identity_unlock:
1af1ac910bb339 arch/x86/kvm/x86.c David Hildenbrand 2017-08-24 4878 mutex_unlock(&kvm->lock);
b927a3cec081a6 arch/x86/kvm/x86.c Sheng Yang 2009-07-21 4879 break;
b927a3cec081a6 arch/x86/kvm/x86.c Sheng Yang 2009-07-21 4880 }
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4881 case KVM_SET_NR_MMU_PAGES:
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4882 r = kvm_vm_ioctl_set_nr_mmu_pages(kvm, arg);
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4883 break;
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4884 case KVM_GET_NR_MMU_PAGES:
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4885 r = kvm_vm_ioctl_get_nr_mmu_pages(kvm);
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4886 break;
3ddea128ad75bd arch/x86/kvm/x86.c Marcelo Tosatti 2009-10-29 4887 case KVM_CREATE_IRQCHIP: {
3ddea128ad75bd arch/x86/kvm/x86.c Marcelo Tosatti 2009-10-29 4888 mutex_lock(&kvm->lock);
099413664c71fc arch/x86/kvm/x86.c Radim Krčmář 2016-12-16 4889
3ddea128ad75bd arch/x86/kvm/x86.c Marcelo Tosatti 2009-10-29 4890 r = -EEXIST;
35e6eaa3df5582 arch/x86/kvm/x86.c Radim Krčmář 2016-12-16 4891 if (irqchip_in_kernel(kvm))
3ddea128ad75bd arch/x86/kvm/x86.c Marcelo Tosatti 2009-10-29 4892 goto create_irqchip_unlock;
099413664c71fc arch/x86/kvm/x86.c Radim Krčmář 2016-12-16 4893
3e515705a1f46b arch/x86/kvm/x86.c Avi Kivity 2012-03-05 4894 r = -EINVAL;
557abc40d12135 arch/x86/kvm/x86.c Paolo Bonzini 2016-06-13 4895 if (kvm->created_vcpus)
3e515705a1f46b arch/x86/kvm/x86.c Avi Kivity 2012-03-05 4896 goto create_irqchip_unlock;
099413664c71fc arch/x86/kvm/x86.c Radim Krčmář 2016-12-16 4897
099413664c71fc arch/x86/kvm/x86.c Radim Krčmář 2016-12-16 4898 r = kvm_pic_init(kvm);
099413664c71fc arch/x86/kvm/x86.c Radim Krčmář 2016-12-16 4899 if (r)
099413664c71fc arch/x86/kvm/x86.c Radim Krčmář 2016-12-16 4900 goto create_irqchip_unlock;
099413664c71fc arch/x86/kvm/x86.c Radim Krčmář 2016-12-16 4901
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4902 r = kvm_ioapic_init(kvm);
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4903 if (r) {
099413664c71fc arch/x86/kvm/x86.c Radim Krčmář 2016-12-16 4904 kvm_pic_destroy(kvm);
3ddea128ad75bd arch/x86/kvm/x86.c Marcelo Tosatti 2009-10-29 4905 goto create_irqchip_unlock;
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4906 }
099413664c71fc arch/x86/kvm/x86.c Radim Krčmář 2016-12-16 4907
399ec807ddc38e arch/x86/kvm/x86.c Avi Kivity 2008-11-19 4908 r = kvm_setup_default_irq_routing(kvm);
399ec807ddc38e arch/x86/kvm/x86.c Avi Kivity 2008-11-19 4909 if (r) {
72bb2fcd23afe8 arch/x86/kvm/x86.c Wei Yongjun 2010-02-09 4910 kvm_ioapic_destroy(kvm);
099413664c71fc arch/x86/kvm/x86.c Radim Krčmář 2016-12-16 4911 kvm_pic_destroy(kvm);
71ba994c94a81c arch/x86/kvm/x86.c Paolo Bonzini 2015-07-29 4912 goto create_irqchip_unlock;
399ec807ddc38e arch/x86/kvm/x86.c Avi Kivity 2008-11-19 4913 }
49776faf93f807 arch/x86/kvm/x86.c Radim Krčmář 2016-12-16 4914 /* Write kvm->irq_routing before enabling irqchip_in_kernel. */
71ba994c94a81c arch/x86/kvm/x86.c Paolo Bonzini 2015-07-29 4915 smp_wmb();
49776faf93f807 arch/x86/kvm/x86.c Radim Krčmář 2016-12-16 4916 kvm->arch.irqchip_mode = KVM_IRQCHIP_KERNEL;
3ddea128ad75bd arch/x86/kvm/x86.c Marcelo Tosatti 2009-10-29 4917 create_irqchip_unlock:
3ddea128ad75bd arch/x86/kvm/x86.c Marcelo Tosatti 2009-10-29 4918 mutex_unlock(&kvm->lock);
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4919 break;
3ddea128ad75bd arch/x86/kvm/x86.c Marcelo Tosatti 2009-10-29 4920 }
7837699fa6d7ad arch/x86/kvm/x86.c Sheng Yang 2008-01-28 4921 case KVM_CREATE_PIT:
c5ff41ce66382d arch/x86/kvm/x86.c Jan Kiszka 2009-05-14 4922 u.pit_config.flags = KVM_PIT_SPEAKER_DUMMY;
c5ff41ce66382d arch/x86/kvm/x86.c Jan Kiszka 2009-05-14 4923 goto create_pit;
c5ff41ce66382d arch/x86/kvm/x86.c Jan Kiszka 2009-05-14 4924 case KVM_CREATE_PIT2:
c5ff41ce66382d arch/x86/kvm/x86.c Jan Kiszka 2009-05-14 4925 r = -EFAULT;
c5ff41ce66382d arch/x86/kvm/x86.c Jan Kiszka 2009-05-14 4926 if (copy_from_user(&u.pit_config, argp,
c5ff41ce66382d arch/x86/kvm/x86.c Jan Kiszka 2009-05-14 4927 sizeof(struct kvm_pit_config)))
c5ff41ce66382d arch/x86/kvm/x86.c Jan Kiszka 2009-05-14 4928 goto out;
c5ff41ce66382d arch/x86/kvm/x86.c Jan Kiszka 2009-05-14 4929 create_pit:
250715a6171a07 arch/x86/kvm/x86.c Paolo Bonzini 2016-06-01 4930 mutex_lock(&kvm->lock);
269e05e48502f1 arch/x86/kvm/x86.c Avi Kivity 2009-01-05 4931 r = -EEXIST;
269e05e48502f1 arch/x86/kvm/x86.c Avi Kivity 2009-01-05 4932 if (kvm->arch.vpit)
269e05e48502f1 arch/x86/kvm/x86.c Avi Kivity 2009-01-05 4933 goto create_pit_unlock;
7837699fa6d7ad arch/x86/kvm/x86.c Sheng Yang 2008-01-28 4934 r = -ENOMEM;
c5ff41ce66382d arch/x86/kvm/x86.c Jan Kiszka 2009-05-14 4935 kvm->arch.vpit = kvm_create_pit(kvm, u.pit_config.flags);
7837699fa6d7ad arch/x86/kvm/x86.c Sheng Yang 2008-01-28 4936 if (kvm->arch.vpit)
7837699fa6d7ad arch/x86/kvm/x86.c Sheng Yang 2008-01-28 4937 r = 0;
269e05e48502f1 arch/x86/kvm/x86.c Avi Kivity 2009-01-05 4938 create_pit_unlock:
250715a6171a07 arch/x86/kvm/x86.c Paolo Bonzini 2016-06-01 4939 mutex_unlock(&kvm->lock);
7837699fa6d7ad arch/x86/kvm/x86.c Sheng Yang 2008-01-28 4940 break;
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4941 case KVM_GET_IRQCHIP: {
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4942 /* 0: PIC master, 1: PIC slave, 2: IOAPIC */
ff5c2c0316ff0e arch/x86/kvm/x86.c Sasha Levin 2011-12-04 4943 struct kvm_irqchip *chip;
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4944
ff5c2c0316ff0e arch/x86/kvm/x86.c Sasha Levin 2011-12-04 4945 chip = memdup_user(argp, sizeof(*chip));
ff5c2c0316ff0e arch/x86/kvm/x86.c Sasha Levin 2011-12-04 4946 if (IS_ERR(chip)) {
ff5c2c0316ff0e arch/x86/kvm/x86.c Sasha Levin 2011-12-04 4947 r = PTR_ERR(chip);
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4948 goto out;
ff5c2c0316ff0e arch/x86/kvm/x86.c Sasha Levin 2011-12-04 4949 }
ff5c2c0316ff0e arch/x86/kvm/x86.c Sasha Levin 2011-12-04 4950
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4951 r = -ENXIO;
826da32140dada arch/x86/kvm/x86.c Radim Krčmář 2016-12-16 4952 if (!irqchip_kernel(kvm))
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4953 goto get_irqchip_out;
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4954 r = kvm_vm_ioctl_get_irqchip(kvm, chip);
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4955 if (r)
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4956 goto get_irqchip_out;
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4957 r = -EFAULT;
0e96f31ea4249b arch/x86/kvm/x86.c Jordan Borgner 2018-10-28 4958 if (copy_to_user(argp, chip, sizeof(*chip)))
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4959 goto get_irqchip_out;
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4960 r = 0;
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4961 get_irqchip_out:
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4962 kfree(chip);
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4963 break;
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4964 }
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4965 case KVM_SET_IRQCHIP: {
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4966 /* 0: PIC master, 1: PIC slave, 2: IOAPIC */
ff5c2c0316ff0e arch/x86/kvm/x86.c Sasha Levin 2011-12-04 4967 struct kvm_irqchip *chip;
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4968
ff5c2c0316ff0e arch/x86/kvm/x86.c Sasha Levin 2011-12-04 4969 chip = memdup_user(argp, sizeof(*chip));
ff5c2c0316ff0e arch/x86/kvm/x86.c Sasha Levin 2011-12-04 4970 if (IS_ERR(chip)) {
ff5c2c0316ff0e arch/x86/kvm/x86.c Sasha Levin 2011-12-04 4971 r = PTR_ERR(chip);
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4972 goto out;
ff5c2c0316ff0e arch/x86/kvm/x86.c Sasha Levin 2011-12-04 4973 }
ff5c2c0316ff0e arch/x86/kvm/x86.c Sasha Levin 2011-12-04 4974
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4975 r = -ENXIO;
826da32140dada arch/x86/kvm/x86.c Radim Krčmář 2016-12-16 4976 if (!irqchip_kernel(kvm))
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4977 goto set_irqchip_out;
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4978 r = kvm_vm_ioctl_set_irqchip(kvm, chip);
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4979 set_irqchip_out:
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4980 kfree(chip);
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4981 break;
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 4982 }
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 4983 case KVM_GET_PIT: {
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 4984 r = -EFAULT;
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4985 if (copy_from_user(&u.ps, argp, sizeof(struct kvm_pit_state)))
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 4986 goto out;
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 4987 r = -ENXIO;
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 4988 if (!kvm->arch.vpit)
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 4989 goto out;
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4990 r = kvm_vm_ioctl_get_pit(kvm, &u.ps);
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 4991 if (r)
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 4992 goto out;
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 4993 r = -EFAULT;
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 4994 if (copy_to_user(argp, &u.ps, sizeof(struct kvm_pit_state)))
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 4995 goto out;
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 4996 r = 0;
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 4997 break;
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 4998 }
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 4999 case KVM_SET_PIT: {
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 5000 r = -EFAULT;
0e96f31ea4249b arch/x86/kvm/x86.c Jordan Borgner 2018-10-28 5001 if (copy_from_user(&u.ps, argp, sizeof(u.ps)))
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 5002 goto out;
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 5003 r = -ENXIO;
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 5004 if (!kvm->arch.vpit)
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 5005 goto out;
f0d662759a2465 arch/x86/kvm/x86.c Dave Hansen 2008-08-11 5006 r = kvm_vm_ioctl_set_pit(kvm, &u.ps);
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 5007 break;
e0f63cb9277b64 arch/x86/kvm/x86.c Sheng Yang 2008-03-04 5008 }
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5009 case KVM_GET_PIT2: {
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5010 r = -ENXIO;
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5011 if (!kvm->arch.vpit)
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5012 goto out;
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5013 r = kvm_vm_ioctl_get_pit2(kvm, &u.ps2);
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5014 if (r)
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5015 goto out;
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5016 r = -EFAULT;
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5017 if (copy_to_user(argp, &u.ps2, sizeof(u.ps2)))
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5018 goto out;
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5019 r = 0;
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5020 break;
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5021 }
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5022 case KVM_SET_PIT2: {
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5023 r = -EFAULT;
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5024 if (copy_from_user(&u.ps2, argp, sizeof(u.ps2)))
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5025 goto out;
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5026 r = -ENXIO;
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5027 if (!kvm->arch.vpit)
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5028 goto out;
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5029 r = kvm_vm_ioctl_set_pit2(kvm, &u.ps2);
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5030 break;
e9f4275732add0 arch/x86/kvm/x86.c Beth Kon 2009-07-07 5031 }
52d939a0bf4408 arch/x86/kvm/x86.c Marcelo Tosatti 2008-12-30 5032 case KVM_REINJECT_CONTROL: {
52d939a0bf4408 arch/x86/kvm/x86.c Marcelo Tosatti 2008-12-30 5033 struct kvm_reinject_control control;
52d939a0bf4408 arch/x86/kvm/x86.c Marcelo Tosatti 2008-12-30 5034 r = -EFAULT;
52d939a0bf4408 arch/x86/kvm/x86.c Marcelo Tosatti 2008-12-30 5035 if (copy_from_user(&control, argp, sizeof(control)))
52d939a0bf4408 arch/x86/kvm/x86.c Marcelo Tosatti 2008-12-30 5036 goto out;
52d939a0bf4408 arch/x86/kvm/x86.c Marcelo Tosatti 2008-12-30 5037 r = kvm_vm_ioctl_reinject(kvm, &control);
52d939a0bf4408 arch/x86/kvm/x86.c Marcelo Tosatti 2008-12-30 5038 break;
52d939a0bf4408 arch/x86/kvm/x86.c Marcelo Tosatti 2008-12-30 5039 }
d71ba788345c2b arch/x86/kvm/x86.c Paolo Bonzini 2015-07-29 5040 case KVM_SET_BOOT_CPU_ID:
d71ba788345c2b arch/x86/kvm/x86.c Paolo Bonzini 2015-07-29 5041 r = 0;
d71ba788345c2b arch/x86/kvm/x86.c Paolo Bonzini 2015-07-29 5042 mutex_lock(&kvm->lock);
557abc40d12135 arch/x86/kvm/x86.c Paolo Bonzini 2016-06-13 5043 if (kvm->created_vcpus)
d71ba788345c2b arch/x86/kvm/x86.c Paolo Bonzini 2015-07-29 5044 r = -EBUSY;
d71ba788345c2b arch/x86/kvm/x86.c Paolo Bonzini 2015-07-29 5045 else
d71ba788345c2b arch/x86/kvm/x86.c Paolo Bonzini 2015-07-29 5046 kvm->arch.bsp_vcpu_id = arg;
d71ba788345c2b arch/x86/kvm/x86.c Paolo Bonzini 2015-07-29 5047 mutex_unlock(&kvm->lock);
d71ba788345c2b arch/x86/kvm/x86.c Paolo Bonzini 2015-07-29 5048 break;
ffde22ac53b6d6 arch/x86/kvm/x86.c Ed Swierk 2009-10-15 5049 case KVM_XEN_HVM_CONFIG: {
51776043afa415 arch/x86/kvm/x86.c Paolo Bonzini 2017-10-26 5050 struct kvm_xen_hvm_config xhc;
ffde22ac53b6d6 arch/x86/kvm/x86.c Ed Swierk 2009-10-15 5051 r = -EFAULT;
51776043afa415 arch/x86/kvm/x86.c Paolo Bonzini 2017-10-26 5052 if (copy_from_user(&xhc, argp, sizeof(xhc)))
ffde22ac53b6d6 arch/x86/kvm/x86.c Ed Swierk 2009-10-15 5053 goto out;
ffde22ac53b6d6 arch/x86/kvm/x86.c Ed Swierk 2009-10-15 5054 r = -EINVAL;
51776043afa415 arch/x86/kvm/x86.c Paolo Bonzini 2017-10-26 5055 if (xhc.flags)
ffde22ac53b6d6 arch/x86/kvm/x86.c Ed Swierk 2009-10-15 5056 goto out;
51776043afa415 arch/x86/kvm/x86.c Paolo Bonzini 2017-10-26 5057 memcpy(&kvm->arch.xen_hvm_config, &xhc, sizeof(xhc));
ffde22ac53b6d6 arch/x86/kvm/x86.c Ed Swierk 2009-10-15 5058 r = 0;
ffde22ac53b6d6 arch/x86/kvm/x86.c Ed Swierk 2009-10-15 5059 break;
ffde22ac53b6d6 arch/x86/kvm/x86.c Ed Swierk 2009-10-15 5060 }
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5061 case KVM_SET_CLOCK: {
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5062 struct kvm_clock_data user_ns;
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5063 u64 now_ns;
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5064
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5065 r = -EFAULT;
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5066 if (copy_from_user(&user_ns, argp, sizeof(user_ns)))
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5067 goto out;
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5068
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5069 r = -EINVAL;
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5070 if (user_ns.flags)
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5071 goto out;
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5072
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5073 r = 0;
0bc48bea36d178 arch/x86/kvm/x86.c Radim Krčmář 2017-05-16 5074 /*
0bc48bea36d178 arch/x86/kvm/x86.c Radim Krčmář 2017-05-16 5075 * TODO: userspace has to take care of races with VCPU_RUN, so
0bc48bea36d178 arch/x86/kvm/x86.c Radim Krčmář 2017-05-16 5076 * kvm_gen_update_masterclock() can be cut down to locked
0bc48bea36d178 arch/x86/kvm/x86.c Radim Krčmář 2017-05-16 5077 * pvclock_update_vm_gtod_copy().
0bc48bea36d178 arch/x86/kvm/x86.c Radim Krčmář 2017-05-16 5078 */
0bc48bea36d178 arch/x86/kvm/x86.c Radim Krčmář 2017-05-16 5079 kvm_gen_update_masterclock(kvm);
e891a32e7ae0c6 arch/x86/kvm/x86.c Marcelo Tosatti 2017-04-17 5080 now_ns = get_kvmclock_ns(kvm);
108b249c453dd7 arch/x86/kvm/x86.c Paolo Bonzini 2016-09-01 5081 kvm->arch.kvmclock_offset += user_ns.clock - now_ns;
0bc48bea36d178 arch/x86/kvm/x86.c Radim Krčmář 2017-05-16 5082 kvm_make_all_cpus_request(kvm, KVM_REQ_CLOCK_UPDATE);
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5083 break;
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5084 }
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5085 case KVM_GET_CLOCK: {
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5086 struct kvm_clock_data user_ns;
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5087 u64 now_ns;
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5088
e891a32e7ae0c6 arch/x86/kvm/x86.c Marcelo Tosatti 2017-04-17 5089 now_ns = get_kvmclock_ns(kvm);
108b249c453dd7 arch/x86/kvm/x86.c Paolo Bonzini 2016-09-01 5090 user_ns.clock = now_ns;
e3fd9a93a12a10 arch/x86/kvm/x86.c Paolo Bonzini 2016-11-09 5091 user_ns.flags = kvm->arch.use_master_clock ? KVM_CLOCK_TSC_STABLE : 0;
97e69aa62f8b5d arch/x86/kvm/x86.c Vasiliy Kulikov 2010-10-30 5092 memset(&user_ns.pad, 0, sizeof(user_ns.pad));
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5093
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5094 r = -EFAULT;
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5095 if (copy_to_user(argp, &user_ns, sizeof(user_ns)))
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5096 goto out;
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5097 r = 0;
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5098 break;
afbcf7ab8d1bc8 arch/x86/kvm/x86.c Glauber Costa 2009-10-16 5099 }
5acc5c063196b4 arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5100 case KVM_MEMORY_ENCRYPT_OP: {
5acc5c063196b4 arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5101 r = -ENOTTY;
5acc5c063196b4 arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5102 if (kvm_x86_ops->mem_enc_op)
5acc5c063196b4 arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5103 r = kvm_x86_ops->mem_enc_op(kvm, argp);
5acc5c063196b4 arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5104 break;
5acc5c063196b4 arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5105 }
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5106 case KVM_MEMORY_ENCRYPT_REG_REGION: {
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5107 struct kvm_enc_region region;
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5108
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5109 r = -EFAULT;
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5110 if (copy_from_user(®ion, argp, sizeof(region)))
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5111 goto out;
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5112
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5113 r = -ENOTTY;
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5114 if (kvm_x86_ops->mem_enc_reg_region)
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5115 r = kvm_x86_ops->mem_enc_reg_region(kvm, ®ion);
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5116 break;
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5117 }
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5118 case KVM_MEMORY_ENCRYPT_UNREG_REGION: {
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5119 struct kvm_enc_region region;
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5120
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5121 r = -EFAULT;
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5122 if (copy_from_user(®ion, argp, sizeof(region)))
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5123 goto out;
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5124
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5125 r = -ENOTTY;
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5126 if (kvm_x86_ops->mem_enc_unreg_region)
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5127 r = kvm_x86_ops->mem_enc_unreg_region(kvm, ®ion);
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5128 break;
69eaedee411c1f arch/x86/kvm/x86.c Brijesh Singh 2017-12-04 5129 }
faeb7833eee0d6 arch/x86/kvm/x86.c Roman Kagan 2018-02-01 5130 case KVM_HYPERV_EVENTFD: {
faeb7833eee0d6 arch/x86/kvm/x86.c Roman Kagan 2018-02-01 5131 struct kvm_hyperv_eventfd hvevfd;
faeb7833eee0d6 arch/x86/kvm/x86.c Roman Kagan 2018-02-01 5132
faeb7833eee0d6 arch/x86/kvm/x86.c Roman Kagan 2018-02-01 5133 r = -EFAULT;
faeb7833eee0d6 arch/x86/kvm/x86.c Roman Kagan 2018-02-01 5134 if (copy_from_user(&hvevfd, argp, sizeof(hvevfd)))
faeb7833eee0d6 arch/x86/kvm/x86.c Roman Kagan 2018-02-01 5135 goto out;
faeb7833eee0d6 arch/x86/kvm/x86.c Roman Kagan 2018-02-01 5136 r = kvm_vm_ioctl_hv_eventfd(kvm, &hvevfd);
faeb7833eee0d6 arch/x86/kvm/x86.c Roman Kagan 2018-02-01 5137 break;
faeb7833eee0d6 arch/x86/kvm/x86.c Roman Kagan 2018-02-01 5138 }
66bb8a065f5aed arch/x86/kvm/x86.c Eric Hankland 2019-07-10 5139 case KVM_SET_PMU_EVENT_FILTER:
66bb8a065f5aed arch/x86/kvm/x86.c Eric Hankland 2019-07-10 5140 r = kvm_vm_ioctl_set_pmu_event_filter(kvm, argp);
66bb8a065f5aed arch/x86/kvm/x86.c Eric Hankland 2019-07-10 5141 break;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5142 case KVM_SUBPAGES_GET_ACCESS: {
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5143 struct kvm_subpage spp_info, *pinfo;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5144 u32 total;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5145
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5146 r = -ENODEV;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5147 if (!kvm->arch.spp_active)
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5148 goto out;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5149
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5150 r = -EFAULT;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5151 if (copy_from_user(&spp_info, argp, sizeof(spp_info)))
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5152 goto out;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5153
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5154 r = -EINVAL;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5155 if (spp_info.flags != 0 ||
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5156 spp_info.npages > KVM_SUBPAGE_MAX_PAGES)
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5157 goto out;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5158 r = 0;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5159 if (!spp_info.npages)
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5160 goto out;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5161
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5162 total = sizeof(spp_info) +
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5163 sizeof(spp_info.access_map[0]) * spp_info.npages;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5164 pinfo = kvzalloc(total, GFP_KERNEL_ACCOUNT);
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5165
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5166 r = -ENOMEM;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5167 if (!pinfo)
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5168 goto out;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5169
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5170 r = -EFAULT;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5171 if (copy_from_user(pinfo, argp, total))
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5172 goto out;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5173
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5174 r = kvm_vm_ioctl_get_subpages(kvm,
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5175 pinfo->gfn_base,
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5176 pinfo->npages,
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5177 pinfo->access_map);
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5178 if (r != pinfo->npages)
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5179 goto out;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5180
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5181 r = -EFAULT;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5182 if (copy_to_user(argp, pinfo, total))
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5183 goto out;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5184
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 @5185 kfree(pinfo);
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 @5186 r = pinfo->npages;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5187 break;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5188 }
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5189 case KVM_SUBPAGES_SET_ACCESS: {
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5190 struct kvm_subpage spp_info, *pinfo;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5191 u32 total;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5192
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5193 r = -ENODEV;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5194 if (!kvm->arch.spp_active)
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5195 goto out;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5196
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5197 r = -EFAULT;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5198 if (copy_from_user(&spp_info, argp, sizeof(spp_info)))
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5199 goto out;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5200
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5201 r = -EINVAL;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5202 if (spp_info.flags != 0 ||
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5203 spp_info.npages > KVM_SUBPAGE_MAX_PAGES)
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5204 goto out;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5205
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5206 r = 0;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5207 if (!spp_info.npages)
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5208 goto out;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5209
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5210 total = sizeof(spp_info) +
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5211 sizeof(spp_info.access_map[0]) * spp_info.npages;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5212 pinfo = kvzalloc(total, GFP_KERNEL_ACCOUNT);
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5213
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5214 r = -ENOMEM;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5215 if (!pinfo)
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5216 goto out;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5217
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5218 r = -EFAULT;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5219 if (copy_from_user(pinfo, argp, total))
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5220 goto out;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5221
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5222 r = kvm_vm_ioctl_set_subpages(kvm,
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5223 pinfo->gfn_base,
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5224 pinfo->npages,
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5225 pinfo->access_map);
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5226 kfree(pinfo);
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5227 break;
148f2ec985f4ef arch/x86/kvm/x86.c Yang Weijiang 2019-12-31 5228 }
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 5229 default:
ad6260da1e23cf arch/x86/kvm/x86.c Paolo Bonzini 2017-03-27 5230 r = -ENOTTY;
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 5231 }
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 5232 out:
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 5233 return r;
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 5234 }
1fe779f8eccd16 drivers/kvm/x86.c Carsten Otte 2007-10-29 5235
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation
1 year, 1 month
[lkp] [+1981 bytes kernel size regression] [i386-tinyconfig] [59c1dcbed5] x86/traps: Print address on #GP
by kbuild test robot
CC: Josh Triplett <josh.triplett(a)intel.com>
FYI, we noticed a +1981 bytes kernel size regression due to commit:
commit: 59c1dcbed5b51cab543be8f47b6d7d9cf107ec94 (x86/traps: Print address on #GP)
https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/core
Details as below (size data is obtained by `nm --size-sort vmlinux`):
7be44127: x86/insn-eval: Add support for 64-bit kernel mode
59c1dcbe: x86/traps: Print address on #GP
+-------------------------------+----------+----------+-------+
| symbol | 7be44127 | 59c1dcbe | delta |
+-------------------------------+----------+----------+-------+
| bzImage | 440016 | 441232 | 1216 |
| nm.T.insn_get_addr_ref | 0 | 614 | 614 |
| nm.t.get_seg_base_limit | 0 | 331 | 331 |
| nm.t.resolve_default_seg | 0 | 170 | 170 |
| nm.t.get_reg_offset | 0 | 130 | 130 |
| nm.T.do_general_protection | 178 | 290 | 112 |
| nm.T.insn_get_code_seg_params | 0 | 102 | 102 |
| nm.t.get_kernel_gp_address | 0 | 100 | 100 |
| nm.t.get_eff_addr_reg | 0 | 94 | 94 |
| nm.t.get_desc | 0 | 64 | 64 |
| nm.T.insn_get_seg_base | 0 | 60 | 60 |
| nm.t.regs_get_register | 0 | 51 | 51 |
| nm.t.get_segment_selector | 0 | 50 | 50 |
| nm.d.regoff | 0 | 32 | 32 |
| nm.d.regoff1 | 0 | 32 | 32 |
| nm.d.regoff2 | 0 | 32 | 32 |
| nm.T.insn_get_modrm_rm_off | 0 | 7 | 7 |
+-------------------------------+----------+----------+-------+
Thanks,
Kbuild test robot
1 year, 1 month
[djwong-xfs:repair-reap-fixes 5/10] fs/xfs/libxfs/xfs_btree.c:5105 xfs_btree_stage_ifakeroot() error: potential null dereference 'nops'. (kmem_alloc returns null)
by kbuild test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git repair-reap-fixes
head: 4d84fd62c97f84b289178e6657ff0887cee25610
commit: f73f2c6f78f638af1b78cdeca2d6dded4b1d7c52 [5/10] xfs: introduce fake roots for inode-rooted btrees
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp(a)intel.com>
New smatch warnings:
fs/xfs/libxfs/xfs_btree.c:5105 xfs_btree_stage_ifakeroot() error: potential null dereference 'nops'. (kmem_alloc returns null)
Old smatch warnings:
fs/xfs/libxfs/xfs_btree.c:1809 xfs_btree_lookup_get_block() error: we previously assumed 'bp' could be null (see line 1784)
fs/xfs/libxfs/xfs_btree.c:5050 xfs_btree_stage_afakeroot() error: potential null dereference 'nops'. (kmem_alloc returns null)
vim +/nops +5105 fs/xfs/libxfs/xfs_btree.c
5064
5065 /*
5066 * Transform an AG-rooted staging btree cursor back into a regular cursor by
5067 * substituting a real btree root for the fake one and restoring normal btree
5068 * cursor ops. The caller must log the btree root change prior to calling
5069 * this.
5070 */
5071 void
5072 xfs_btree_commit_afakeroot(
5073 struct xfs_btree_cur *cur,
5074 struct xfs_buf *agbp,
5075 const struct xfs_btree_ops *ops)
5076 {
5077 ASSERT(cur->bc_flags & XFS_BTREE_STAGING);
5078
5079 trace_xfs_btree_commit_afakeroot(cur);
5080
5081 kmem_free((void *)cur->bc_ops);
5082 cur->bc_private.a.agbp = agbp;
5083 cur->bc_ops = ops;
5084 cur->bc_flags &= ~XFS_BTREE_STAGING;
5085 }
5086 /*
5087 * Initialize an inode-rooted btree cursor with the given inode btree fake
5088 * root. The btree cursor's @bc_ops will be overridden as needed to make the
5089 * staging functionality work. If @new_ops is not NULL, these new ops will be
5090 * passed out to the caller for further overriding.
5091 */
5092 void
5093 xfs_btree_stage_ifakeroot(
5094 struct xfs_btree_cur *cur,
5095 struct xbtree_ifakeroot *ifake,
5096 struct xfs_btree_ops **new_ops)
5097 {
5098 struct xfs_btree_ops *nops;
5099
5100 ASSERT(!(cur->bc_flags & XFS_BTREE_STAGING));
5101 ASSERT(cur->bc_flags & XFS_BTREE_ROOT_IN_INODE);
5102
5103 nops = kmem_alloc(sizeof(struct xfs_btree_ops), KM_NOFS);
5104 memcpy(nops, cur->bc_ops, sizeof(struct xfs_btree_ops));
> 5105 nops->alloc_block = xfs_btree_fakeroot_alloc_block;
5106 nops->free_block = xfs_btree_fakeroot_free_block;
5107 nops->init_ptr_from_cur = xfs_btree_fakeroot_init_ptr_from_cur;
5108 nops->dup_cursor = xfs_btree_fakeroot_dup_cursor;
5109
5110 cur->bc_private.b.ifake = ifake;
5111 cur->bc_nlevels = ifake->if_levels;
5112 cur->bc_ops = nops;
5113 cur->bc_flags |= XFS_BTREE_STAGING;
5114
5115 if (new_ops)
5116 *new_ops = nops;
5117 }
5118
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation
1 year, 1 month
[djwong-xfs:repair-reap-fixes 4/10] fs/xfs/libxfs/xfs_btree.c:5031 xfs_btree_stage_afakeroot() error: potential null dereference 'nops'. (kmem_alloc returns null)
by kbuild test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git repair-reap-fixes
head: 4d84fd62c97f84b289178e6657ff0887cee25610
commit: fa3dc10a00668a862b9eb45506b3345ffec5d097 [4/10] xfs: introduce fake roots for ag-rooted btrees
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp(a)intel.com>
New smatch warnings:
fs/xfs/libxfs/xfs_btree.c:5031 xfs_btree_stage_afakeroot() error: potential null dereference 'nops'. (kmem_alloc returns null)
Old smatch warnings:
fs/xfs/libxfs/xfs_btree.c:1799 xfs_btree_lookup_get_block() error: we previously assumed 'bp' could be null (see line 1774)
vim +/nops +5031 fs/xfs/libxfs/xfs_btree.c
5011
5012 /*
5013 * Initialize a AG-rooted btree cursor with the given AG btree fake root. The
5014 * btree cursor's @bc_ops will be overridden as needed to make the staging
5015 * functionality work. If @new_ops is not NULL, these new ops will be passed
5016 * out to the caller for further overriding.
5017 */
5018 void
5019 xfs_btree_stage_afakeroot(
5020 struct xfs_btree_cur *cur,
5021 struct xbtree_afakeroot *afake,
5022 struct xfs_btree_ops **new_ops)
5023 {
5024 struct xfs_btree_ops *nops;
5025
5026 ASSERT(!(cur->bc_flags & XFS_BTREE_STAGING));
5027 ASSERT(!(cur->bc_flags & XFS_BTREE_ROOT_IN_INODE));
5028
5029 nops = kmem_alloc(sizeof(struct xfs_btree_ops), KM_NOFS);
5030 memcpy(nops, cur->bc_ops, sizeof(struct xfs_btree_ops));
> 5031 nops->alloc_block = xfs_btree_fakeroot_alloc_block;
5032 nops->free_block = xfs_btree_fakeroot_free_block;
5033 nops->init_ptr_from_cur = xfs_btree_fakeroot_init_ptr_from_cur;
5034 nops->set_root = xfs_btree_afakeroot_set_root;
5035 nops->dup_cursor = xfs_btree_fakeroot_dup_cursor;
5036
5037 cur->bc_private.a.afake = afake;
5038 cur->bc_nlevels = afake->af_levels;
5039 cur->bc_ops = nops;
5040 cur->bc_flags |= XFS_BTREE_STAGING;
5041
5042 if (new_ops)
5043 *new_ops = nops;
5044 }
5045
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation
1 year, 1 month
[drm-drm-intel:topic/core-for-CI 18/19] drivers/gpu/drm/i915/Kconfig:2: symbol DRM_I915 depends on DRM
by kbuild test robot
Hi Joonas,
FYI, the error/warning still remains.
tree: git://anongit.freedesktop.org/drm/drm-intel topic/core-for-CI
head: 78c1332d19c217f195c5cf2e3e735f18ac9e8936
commit: a42e0d4d725b6b6ee543d11282658b2b1d6eb3df [18/19] Revert "drm/i915: Don't select BROKEN"
config: powerpc-defconfig
compiler: powerpc64-linux-gcc (GCC) 7.5.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 a42e0d4d725b6b6ee543d11282658b2b1d6eb3df
GCC_VERSION=7.5.0 make.cross ARCH=powerpc defconfig
GCC_VERSION=7.5.0 make.cross ARCH=powerpc
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
arch/powerpc/platforms/embedded6xx/Kconfig:2:error: recursive dependency detected!
arch/powerpc/platforms/embedded6xx/Kconfig:2: symbol EMBEDDED6xx depends on BROKEN_ON_SMP
init/Kconfig:79: symbol BROKEN_ON_SMP depends on BROKEN
init/Kconfig:76: symbol BROKEN is selected by DRM_I915_DEBUG
drivers/gpu/drm/i915/Kconfig.debug:19: symbol DRM_I915_DEBUG depends on DRM_I915
>> drivers/gpu/drm/i915/Kconfig:2: symbol DRM_I915 depends on DRM
>> drivers/gpu/drm/Kconfig:8: symbol DRM depends on AGP
>> drivers/char/agp/Kconfig:2: symbol AGP depends on PCI
drivers/pci/Kconfig:16: symbol PCI depends on HAVE_PCI
drivers/pci/Kconfig:7: symbol HAVE_PCI is selected by FORCE_PCI
drivers/pci/Kconfig:11: symbol FORCE_PCI is selected by MVME5100
arch/powerpc/platforms/embedded6xx/Kconfig:51: symbol MVME5100 depends on EMBEDDED6xx
For a resolution refer to Documentation/kbuild/kconfig-language.rst
subsection "Kconfig recursive dependency limitations"
vim +2 drivers/gpu/drm/i915/Kconfig
4520f53a159fb8 Daniel Vetter 2013-10-09 @2 config DRM_I915
4520f53a159fb8 Daniel Vetter 2013-10-09 3 tristate "Intel 8xx/9xx/G3x/G4x/HD Graphics"
4520f53a159fb8 Daniel Vetter 2013-10-09 4 depends on DRM
00fe639a56b409 Ville Syrjälä 2013-11-05 5 depends on X86 && PCI
00fe639a56b409 Ville Syrjälä 2013-11-05 6 select INTEL_GTT
5cc9ed4b9a7ac5 Chris Wilson 2014-05-16 7 select INTERVAL_TREE
4520f53a159fb8 Daniel Vetter 2013-10-09 8 # we need shmfs for the swappable backing store, and in particular
4520f53a159fb8 Daniel Vetter 2013-10-09 9 # the shmem_readpage() which depends upon tmpfs
4520f53a159fb8 Daniel Vetter 2013-10-09 10 select SHMEM
4520f53a159fb8 Daniel Vetter 2013-10-09 11 select TMPFS
4520f53a159fb8 Daniel Vetter 2013-10-09 12 select DRM_KMS_HELPER
593e0622f4e415 Jani Nikula 2015-01-23 13 select DRM_PANEL
7e9804fdcffc65 Jani Nikula 2015-01-16 14 select DRM_MIPI_DSI
f824083559af27 Akash Goel 2016-10-12 15 select RELAY
81c0ed21aa9123 Chris Wilson 2017-09-11 16 select IRQ_WORK
4520f53a159fb8 Daniel Vetter 2013-10-09 17 # i915 depends on ACPI_VIDEO when ACPI is enabled
4520f53a159fb8 Daniel Vetter 2013-10-09 18 # but for select to work, need to select ACPI_VIDEO's dependencies, ick
4520f53a159fb8 Daniel Vetter 2013-10-09 19 select BACKLIGHT_CLASS_DEVICE if ACPI
4520f53a159fb8 Daniel Vetter 2013-10-09 20 select INPUT if ACPI
4520f53a159fb8 Daniel Vetter 2013-10-09 21 select ACPI_VIDEO if ACPI
4520f53a159fb8 Daniel Vetter 2013-10-09 22 select ACPI_BUTTON if ACPI
fec0445caa2732 Chris Wilson 2017-01-27 23 select SYNC_FILE
264ec1a8221c60 Hans de Goede 2017-02-10 24 select IOSF_MBI
a25bcadd0d9204 Nicholas Piggin 2017-06-21 25 select CRC32
a57942bfdd61b4 Takashi Iwai 2018-07-11 26 select SND_HDA_I915 if SND_HDA_CORE
9c229127aee2d7 Neil Armstrong 2018-07-04 27 select CEC_CORE if CEC_NOTIFIER
4520f53a159fb8 Daniel Vetter 2013-10-09 28 help
4520f53a159fb8 Daniel Vetter 2013-10-09 29 Choose this option if you have a system that has "Intel Graphics
4520f53a159fb8 Daniel Vetter 2013-10-09 30 Media Accelerator" or "HD Graphics" integrated graphics,
4520f53a159fb8 Daniel Vetter 2013-10-09 31 including 830M, 845G, 852GM, 855GM, 865G, 915G, 945G, 965G,
4520f53a159fb8 Daniel Vetter 2013-10-09 32 G35, G41, G43, G45 chipsets and Celeron, Pentium, Core i3,
4520f53a159fb8 Daniel Vetter 2013-10-09 33 Core i5, Core i7 as well as Atom CPUs with integrated graphics.
352cb4ef2d345f Jani Nikula 2016-10-21 34
352cb4ef2d345f Jani Nikula 2016-10-21 35 This driver is used by the Intel driver in X.org 6.8 and
352cb4ef2d345f Jani Nikula 2016-10-21 36 XFree86 4.4 and above. It replaces the older i830 module that
352cb4ef2d345f Jani Nikula 2016-10-21 37 supported a subset of the hardware in older X.org releases.
4520f53a159fb8 Daniel Vetter 2013-10-09 38
4520f53a159fb8 Daniel Vetter 2013-10-09 39 Note that the older i810/i815 chipsets require the use of the
4520f53a159fb8 Daniel Vetter 2013-10-09 40 i810 driver instead, and the Atom z5xx series has an entirely
4520f53a159fb8 Daniel Vetter 2013-10-09 41 different implementation.
4520f53a159fb8 Daniel Vetter 2013-10-09 42
352cb4ef2d345f Jani Nikula 2016-10-21 43 If "M" is selected, the module will be called i915.
352cb4ef2d345f Jani Nikula 2016-10-21 44
:::::: The code at line 2 was first introduced by commit
:::::: 4520f53a159fb81b8c27afe52428a0959aff259c drm/i915: Kconfig option to disable the legacy fbdev support
:::::: TO: Daniel Vetter <daniel.vetter(a)ffwll.ch>
:::::: CC: Daniel Vetter <daniel.vetter(a)ffwll.ch>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation
1 year, 1 month