Messages in this thread | | | Subject | Re: [PATCH v2 02/14] KVM: SVM: Free sev_asid_bitmap during init if SEV setup fails | From | Tom Lendacky <> | Date | Thu, 14 Jan 2021 12:02:19 -0600 |
| |
On 1/14/21 11:12 AM, Sean Christopherson wrote: > On Thu, Jan 14, 2021, Tom Lendacky wrote: >> On 1/13/21 6:36 PM, Sean Christopherson wrote: >>> Free sev_asid_bitmap if the reclaim bitmap allocation fails, othwerise >>> KVM will unnecessarily keep the bitmap when SEV is not fully enabled. >>> >>> Freeing the page is also necessary to avoid introducing a bug when a >>> future patch eliminates svm_sev_enabled() in favor of using the global >>> 'sev' flag directly. While sev_hardware_enabled() checks max_sev_asid, >>> which is true even if KVM setup fails, 'sev' will be true if and only >>> if KVM setup fully succeeds. >>> >>> Fixes: 33af3a7ef9e6 ("KVM: SVM: Reduce WBINVD/DF_FLUSH invocations")
Oops, missed this last time... I don't think the Fixes: tag is needed anymore unless you don't want the memory consumption of the first bitmap, should the allocation of the second bitmap fail, until kvm_amd is rmmod'ed. Up to you.
Thanks, Tom
>>> Cc: Tom Lendacky <thomas.lendacky@amd.com> >>> Signed-off-by: Sean Christopherson <seanjc@google.com> >>> --- >>> arch/x86/kvm/svm/sev.c | 4 +++- >>> 1 file changed, 3 insertions(+), 1 deletion(-) >>> >>> diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c >>> index c8ffdbc81709..0eeb6e1b803d 100644 >>> --- a/arch/x86/kvm/svm/sev.c >>> +++ b/arch/x86/kvm/svm/sev.c >>> @@ -1274,8 +1274,10 @@ void __init sev_hardware_setup(void) >>> goto out; >>> sev_reclaim_asid_bitmap = bitmap_zalloc(max_sev_asid, GFP_KERNEL); >>> - if (!sev_reclaim_asid_bitmap) >>> + if (!sev_reclaim_asid_bitmap) { >>> + bitmap_free(sev_asid_bitmap); >> >> Until that future change, you probably need to do sev_asid_bitmap = NULL >> here to avoid an issue in sev_hardware_teardown() when it tries to free it >> again. > > Argh, you're right. Thanks! >
| |