Kernel KVM virtualization development
 help / color / mirror / Atom feed
From: Borislav Petkov <bp@alien8.de>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm ML <kvm@vger.kernel.org>, lkml <linux-kernel@vger.kernel.org>,
	Xiao Guangrong <guangrong.xiao@linux.intel.com>
Subject: Re: include/linux/kvm_host.h:488 suspicious rcu_dereference_check() usage!
Date: Mon, 21 Sep 2015 17:44:54 +0200	[thread overview]
Message-ID: <20150921154454.GB3666@pd.tnic> (raw)
In-Reply-To: <5600201D.8050700@redhat.com>

On Mon, Sep 21, 2015 at 05:19:57PM +0200, Paolo Bonzini wrote:
> First, the leaf test would have to be == 0, because I prepared the
> patch on the first 4.3 pull request instead of the latest Linus
> tree.  However even this would not be a good change, because
> 
> is_shadow_present_pte(spte) == !(pte & PT_PRESENT_MASK) || is_mmio_spte(pte)
> 
> and thus is_shadow_present_pte implies the "if" I'm adding above.
> 
> So can you instead please add this debugging printk?
> 
> diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
> index fb16a8ea3dee..90e8ef264861 100644
> --- a/arch/x86/kvm/mmu.c
> +++ b/arch/x86/kvm/mmu.c
> @@ -3334,6 +3334,7 @@ walk_shadow_page_get_mmio_spte(struct kvm_vcpu *vcpu, u64 addr, u64 *sptep)
>  			       sptes[root - 1], root);
>  			root--;
>  		}
> +		pr_err("shadow_mmio_mask: %lx\n", shadow_mmio_mask);
>  	}
>  exit:
>  	*sptep = spte;

Ok, here's with this ontop. Fixed it up to:

Index: b/arch/x86/kvm/mmu.c
===================================================================
--- a/arch/x86/kvm/mmu.c	2015-09-21 17:26:25.213434565 +0200
+++ b/arch/x86/kvm/mmu.c	2015-09-21 17:27:14.333435968 +0200
@@ -3335,6 +3335,7 @@ walk_shadow_page_get_mmio_spte(struct kv
 			       sptes[root - 1], root);
 			root--;
 		}
+		pr_err("shadow_mmio_mask: 0x%llx\n", shadow_mmio_mask);
 	}
 exit:
 	*sptep = spte;

---

as shadow_mmio_mask is u64.

[   62.765446] walk_shadow_page_get_mmio_spte: detect reserved bits on spte, addr 0xb8000, dump hierarchy:
[   62.774903] ------ spte 0x4173d3027 level 4.
[   62.779209] ------ spte 0x4173d1027 level 3.
[   62.783558] ------ spte 0x4173c8027 level 2.
[   62.783561] ------ spte 0xffff0000000b8f67 level 1.
[   62.783562] shadow_mmio_mask: 0xc00f000000000001
[   62.783564] ------------[ cut here ]------------
[   62.783604] WARNING: CPU: 2 PID: 3531 at arch/x86/kvm/mmu.c:3386 handle_mmio_page_fault.part.93+0x1a/0x20 [kvm]()
[   62.783642] Modules linked in: tun sha256_ssse3 sha256_generic drbg binfmt_misc ipv6 vfat fat fuse dm_crypt dm_mod kvm_amd kvm crc32_pclmul aesni_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd amd64_edac_mod k10temp fam15h_power edac_core amdkfd amd_iommu_v2 radeon acpi_cpufreq
[   62.783646] CPU: 2 PID: 3531 Comm: qemu-system-x86 Not tainted 4.3.0-rc2+ #1
[   62.783648] Hardware name: To be filled by O.E.M. To be filled by O.E.M./M5A97 EVO R2.0, BIOS 1503 01/16/2013
[   62.783654]  ffffffffa0401892 ffff880416eafb80 ffffffff812c8c2a 0000000000000000
[   62.783665]  ffff880416eafbb8 ffffffff81053e55 ffff8804172d8000 000000000000000f
[   62.783666]  00000000000b8000 0000000000000000 00000000ffffffff ffff880416eafbc8
[   62.783667] Call Trace:
[   62.783671]  [<ffffffff812c8c2a>] dump_stack+0x4e/0x84
[   62.783673]  [<ffffffff81053e55>] warn_slowpath_common+0x95/0xe0
[   62.783674]  [<ffffffff81053f5a>] warn_slowpath_null+0x1a/0x20
[   62.783684]  [<ffffffffa03d47ba>] handle_mmio_page_fault.part.93+0x1a/0x20 [kvm]
[   62.783694]  [<ffffffffa03db081>] tdp_page_fault+0x231/0x290 [kvm]
[   62.783697]  [<ffffffff810a24bd>] ? __lock_acquire+0x62d/0x19e0
[   62.783705]  [<ffffffffa03c432e>] ? emulator_pio_in_out+0x6e/0xf0 [kvm]
[   62.783715]  [<ffffffffa03d66f6>] kvm_mmu_page_fault+0x36/0x240 [kvm]
[   62.783718]  [<ffffffffa045c71e>] pf_interception+0xde/0x1d0 [kvm_amd]
[   62.783720]  [<ffffffffa045ecb1>] handle_exit+0x181/0xa70 [kvm_amd]
[   62.783729]  [<ffffffffa03cc50b>] ? kvm_arch_vcpu_ioctl_run+0x68b/0x1730 [kvm]
[   62.783738]  [<ffffffffa03cc576>] kvm_arch_vcpu_ioctl_run+0x6f6/0x1730 [kvm]
[   62.783748]  [<ffffffffa03cc50b>] ? kvm_arch_vcpu_ioctl_run+0x68b/0x1730 [kvm]
[   62.783749]  [<ffffffff81082afb>] ? preempt_count_sub+0x9b/0xf0
[   62.783751]  [<ffffffff816c144f>] ? mutex_lock_killable_nested+0x26f/0x490
[   62.783753]  [<ffffffff81082afb>] ? preempt_count_sub+0x9b/0xf0
[   62.783759]  [<ffffffffa03b37e8>] kvm_vcpu_ioctl+0x358/0x710 [kvm]
[   62.783761]  [<ffffffff810a0ae1>] ? __lock_is_held+0x51/0x70
[   62.783762]  [<ffffffff811a0711>] ? __fget+0x101/0x210
[   62.783764]  [<ffffffff81194a54>] do_vfs_ioctl+0x2f4/0x560
[   62.783766]  [<ffffffff811a0889>] ? __fget_light+0x29/0x90
[   62.783767]  [<ffffffff81194d0c>] SyS_ioctl+0x4c/0x90
[   62.783769]  [<ffffffff816c495b>] entry_SYSCALL_64_fastpath+0x16/0x73
[   62.783770] ---[ end trace 8fe1d7df0fb72e0c ]---

-- 
Regards/Gruss,
    Boris.

ECO tip #101: Trim your mails when you reply.

      reply	other threads:[~2015-09-21 15:44 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-20 16:48 include/linux/kvm_host.h:488 suspicious rcu_dereference_check() usage! Borislav Petkov
2015-09-21  5:48 ` Paolo Bonzini
2015-09-21 15:10 ` Paolo Bonzini
2015-09-21 15:19   ` Paolo Bonzini
2015-09-21 15:44     ` Borislav Petkov [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150921154454.GB3666@pd.tnic \
    --to=bp@alien8.de \
    --cc=guangrong.xiao@linux.intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox