From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753203AbbIARD6 (ORCPT ); Tue, 1 Sep 2015 13:03:58 -0400 Received: from mail-wi0-f174.google.com ([209.85.212.174]:33871 "EHLO mail-wi0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750829AbbIARD4 (ORCPT ); Tue, 1 Sep 2015 13:03:56 -0400 Subject: Re: [GIT PULL] Early batch of KVM changes for 4.3 merge window To: Linus Torvalds , Xiao Guangrong References: <1439596650-7237-1-git-send-email-pbonzini@redhat.com> Cc: Linux Kernel Mailing List , Gleb Natapov , KVM list From: Paolo Bonzini X-Enigmail-Draft-Status: N1110 Message-ID: <55E5DA7C.60605@redhat.com> Date: Tue, 1 Sep 2015 19:03:56 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 01/09/2015 02:47, Linus Torvalds wrote: > Hmm: > > On Fri, Aug 14, 2015 at 4:57 PM, Paolo Bonzini wrote: >> >> Xiao Guangrong (9): >> KVM: MMU: fully check zero bits for sptes > > The above commit causes an annoying new compiler warning. > > The warning is bogus ("variable 'leaf' possibly uninitialized"), > because the use of the variable is protected by the 'bool reserved' > flag, but gcc is apparently not smart enough to understand that. Unfortunately it doesn't reproduce on all compiler versions. Something like this should do it: diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index fb16a8ea3dee..3c745f3abde8 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c @@ -3309,13 +3309,13 @@ walk_shadow_page_get_mmio_spte(struct kvm_vcpu *vcpu, u64 addr, u64 *sptep) walk_shadow_page_lockless_begin(vcpu); - for (shadow_walk_init(&iterator, vcpu, addr), root = iterator.level; + for (shadow_walk_init(&iterator, vcpu, addr), + leaf = root = iterator.level; shadow_walk_okay(&iterator); __shadow_walk_next(&iterator, spte)) { - leaf = iterator.level; spte = mmu_spte_get_lockless(iterator.sptep); - sptes[leaf - 1] = spte; + sptes[--leaf] = spte; if (!is_shadow_present_pte(spte)) break; @@ -3329,7 +3329,7 @@ walk_shadow_page_get_mmio_spte(struct kvm_vcpu *vcpu, u64 addr, u64 *sptep) if (reserved) { pr_err("%s: detect reserved bits on spte, addr 0x%llx, dump hierarchy:\n", __func__, addr); - while (root >= leaf) { + while (root > leaf) { pr_err("------ spte 0x%llx level %d.\n", sptes[root - 1], root); root--; But honestly I haven't even compiled it yet. Xiao, what do you think? Paolo > Since bogus warnings cause people to possibly ignore the *real* > warnings, this should be fixed. Maybe the code should get rid of that > 'reserved' flag, and instead initialize "leaf" to zero, and use that > as the flag instead (since zero isn't a valid level)? That would > actually avoid an extra variable, and would get rid of the warning. > > Hmm? > > Linus > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >