Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp2638pxb; Wed, 11 Nov 2020 17:48:36 -0800 (PST) X-Google-Smtp-Source: ABdhPJxNNAlgsqWEqBmoeOLGIfkzc7uwI5ibLv9oArA7wPZk2W1O1wCFqUz9kCZMEXNPR+yrifep X-Received: by 2002:a17:906:4c57:: with SMTP id d23mr27845837ejw.321.1605145716754; Wed, 11 Nov 2020 17:48:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605145716; cv=none; d=google.com; s=arc-20160816; b=jBu9izBavnqZEutfLarf+eXR92h8kM2hIujjtdZbx4FWfcKvzZeh4mBUUis+w0K1HC TLW6WfgWiCcoGPdvgbDZ67VArj6OV8zxVmKgvlUcR1OqpTG4sJ1J0RxxIwjHb9JQFJJr 5ccOsAoHU35aCzDC8HAbHapdyQ5yHvyAHb+PRMTlNNOnFMZsF/OXJzHA0GopxT+0vJ/T rrRBs6bpa46ojX2+oRJW24r8okaLOInY5tGrFtVQDPXCUDIU3Tskqp0lSFjoN81fjAMk EhvxlhZO8BlrwiArJ5GSf/G7FRgsHYy4n3/fxLxVcALgvqaN1fjZDiI8ckkv4aNAcvQS LRRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:mail-followup-to:message-id:subject:cc:to:from:date; bh=ym++PFytVcNDKZZN1yz4r4YdHCO471gF2RXC1B2rczw=; b=j+BbkGDdqRBiiTaa8XTbRwEGDnq2yZAsgj50+PuE+hIgv4HBGvbCz/SBRj81xGdGO+ To/IrjiZs0ucvnaFRqMroalK9yZ3lHZhDGIaW7GjKEMEQ9lTGo8qRRMvILHWvl/XJrU7 O2tyoQv+5Sx8WBNhFR47FD87dj4N5FekyGM9PizluBp09fljzGcrl8qvwas0LJq8A20C LyJAE2xUizRGJFJ0nDzoIdQWY5byPEL2VF3ALuAg7VbeUdos7jbWc+2m5avMQ5Wu+vH9 +Y0NFO4J+k1fb+RT9K0SDkcqMFUXD+OkH2iTKGK2wwUqBHGIqNpDDg7mOij89skbBbLS dnrQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id gs24si2708036ejb.74.2020.11.11.17.48.13; Wed, 11 Nov 2020 17:48:36 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728668AbgKLBd4 (ORCPT + 99 others); Wed, 11 Nov 2020 20:33:56 -0500 Received: from audible.transient.net ([24.143.126.66]:54904 "HELO audible.transient.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1727475AbgKKW5S (ORCPT ); Wed, 11 Nov 2020 17:57:18 -0500 Received: (qmail 12014 invoked from network); 11 Nov 2020 22:57:15 -0000 Received: from cucamonga.audible.transient.net (192.168.2.5) by canarsie.audible.transient.net with QMQP; 11 Nov 2020 22:57:15 -0000 Received: (nullmailer pid 3746 invoked by uid 1000); Wed, 11 Nov 2020 22:57:15 -0000 Date: Wed, 11 Nov 2020 22:57:15 +0000 From: Jamie Heilman To: Ben Gardon Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Paolo Bonzini , Sean Christopherson , Peter Shier , Jim Mattson , Zdenek Kaspar Subject: Re: [PATCH] kvm: x86/mmu: Fix is_tdp_mmu_check when using PAE Message-ID: <20201111225715.GA2910@audible.transient.net> Mail-Followup-To: Ben Gardon , linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Paolo Bonzini , Sean Christopherson , Peter Shier , Jim Mattson , Zdenek Kaspar References: <20201111185337.1237383-1-bgardon@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20201111185337.1237383-1-bgardon@google.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Ben Gardon wrote: > When PAE is in use, the root_hpa will not have a shadow page assoicated > with it. In this case the kernel will crash with a NULL pointer > dereference. Add checks to ensure is_tdp_mmu_root works as intended even > when using PAE. This seems to work in my amd64 case as well. (https://marc.info/?l=linux-kernel&m=160494962201032&w=2) > Tested: compiles > > Fixes: 02c00b3a2f7e ("kvm: x86/mmu: Allocate and free TDP MMU roots") > Reported-by: Zdenek Kaspar > Signed-off-by: Ben Gardon > --- > arch/x86/kvm/mmu/tdp_mmu.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/arch/x86/kvm/mmu/tdp_mmu.c b/arch/x86/kvm/mmu/tdp_mmu.c > index 27e381c9da6c..13013f4d98ad 100644 > --- a/arch/x86/kvm/mmu/tdp_mmu.c > +++ b/arch/x86/kvm/mmu/tdp_mmu.c > @@ -49,8 +49,18 @@ bool is_tdp_mmu_root(struct kvm *kvm, hpa_t hpa) > { > struct kvm_mmu_page *sp; > > + if (WARN_ON(!VALID_PAGE(hpa))) > + return false; > + > sp = to_shadow_page(hpa); > > + /* > + * If this VM is being run with PAE, the TDP MMU will not be enabled > + * and the root HPA will not have a shadow page associated with it. > + */ > + if (!sp) > + return false; > + > return sp->tdp_mmu_page && sp->root_count; > } > > -- > 2.29.2.222.g5d2a92d10f8-goog > -- Jamie Heilman http://audible.transient.net/~jamie/