Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp312367ybi; Wed, 29 May 2019 22:03:09 -0700 (PDT) X-Google-Smtp-Source: APXvYqz0UM9YvNnkmvYZoXVG7xWjUMVrR+KcX/34wzPtD+V27/dfssA6go31hjBG57u2oDSHt6iE X-Received: by 2002:a17:902:e48e:: with SMTP id cj14mr1870927plb.299.1559192589502; Wed, 29 May 2019 22:03:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559192589; cv=none; d=google.com; s=arc-20160816; b=TYEPGbTTRK2KpnoWdygr3x72o7Gc8AVDBlJoDaBI1BI/jrBBjX/AUqqSrMan+ogeTH 1LFGKX/cE7JRHlI7beyiUtOa1tIr8l6VM3PBRhFmv/31KM2Mbct5XyB3DXIeWQsAbIEs kwU3a1ucqVoeKZN9cLmJQ5O4W2wzX/pd2+034XwItxf5Rw+/xC32VS4AfhVaGuh+QJ1E uV/JA/o0BlnEj6G50lEFWIQ5jzXMYITiJrrxaElHgeVTO3EKC6Kiucj3WU480ih2wYH/ ULTd/0jWRaRznGMDc3vrlFyIvzXVvFHbaoleJQj32pM1iCm72dugLD2/dFjSUzYyNYdA 14GQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=xD2Wnf7kF5ZD0zDFn/mv4u7WrlCXE2kVO1LCyDvjcbc=; b=cHq4VD8lCwCb8+P2L45fxmz/Yu8ifPRlLfFJGdr66Wm9JzHkT7w9pnAYaDCHIDwThD eY+HCu7UQPmBRfhgP7Aqhditz8KwKs6Jb3ZWLs3yjlh/E5VUZpYZMRgePjl/ZlhpsXd4 bbtYF3iDJepSsGn9YcrirF2GOpdEJ2womxlpigaASglE7aZpCKQqLu6cljAsvy88QwdV AlnI4hUda9zz78f+m0TEG78skDx1JpP4QGlXaEYcqsN3KG461dGGKPsDC05oqu9zfsGl PSVa7Dck+9JEc8OcgiH+9n0WTE3t7dzf6EM9O5VP9ds0fSy/Vy9DTSonssoqdq9Rqtw5 PgJQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=0MdrbZCN; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o188si2140522pgo.489.2019.05.29.22.02.51; Wed, 29 May 2019 22:03:09 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=0MdrbZCN; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727650AbfE3DJf (ORCPT + 99 others); Wed, 29 May 2019 23:09:35 -0400 Received: from mail.kernel.org ([198.145.29.99]:44120 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727563AbfE3DJ2 (ORCPT ); Wed, 29 May 2019 23:09:28 -0400 Received: from localhost (ip67-88-213-2.z213-88-67.customer.algx.net [67.88.213.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id CC14124480; Thu, 30 May 2019 03:09:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1559185767; bh=JPsMg2qdVebugYbJg/LHRwLUiu4TwnK5mJDChYZwLVc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=0MdrbZCNIg3zBAr/rJ3+8luS3K3s8F9+QAI8bXg7dOIAoR5IXo92NTlD6bfPH3CVk pW1WeuQs3rVj170paeEmYXeAbnR7QdFo63vsQLgmi8NgVZ4pXQ+jD5LerNvDTiSgtr hAOTxOul0yAt1yPtCU0xFtGE8dp25mEmgQLMsJCM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Paolo Bonzini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Wanpeng Li , Sean Christopherson Subject: [PATCH 5.1 017/405] KVM: nVMX: Fix using __this_cpu_read() in preemptible context Date: Wed, 29 May 2019 20:00:15 -0700 Message-Id: <20190530030541.409293451@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190530030540.291644921@linuxfoundation.org> References: <20190530030540.291644921@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Wanpeng Li commit 541e886f7972cc647804dbb4909189e67987a945 upstream. BUG: using __this_cpu_read() in preemptible [00000000] code: qemu-system-x86/4590 caller is nested_vmx_enter_non_root_mode+0xebd/0x1790 [kvm_intel] CPU: 4 PID: 4590 Comm: qemu-system-x86 Tainted: G OE 5.1.0-rc4+ #1 Call Trace: dump_stack+0x67/0x95 __this_cpu_preempt_check+0xd2/0xe0 nested_vmx_enter_non_root_mode+0xebd/0x1790 [kvm_intel] nested_vmx_run+0xda/0x2b0 [kvm_intel] handle_vmlaunch+0x13/0x20 [kvm_intel] vmx_handle_exit+0xbd/0x660 [kvm_intel] kvm_arch_vcpu_ioctl_run+0xa2c/0x1e50 [kvm] kvm_vcpu_ioctl+0x3ad/0x6d0 [kvm] do_vfs_ioctl+0xa5/0x6e0 ksys_ioctl+0x6d/0x80 __x64_sys_ioctl+0x1a/0x20 do_syscall_64+0x6f/0x6c0 entry_SYSCALL_64_after_hwframe+0x49/0xbe Accessing per-cpu variable should disable preemption, this patch extends the preemption disable region for __this_cpu_read(). Cc: Paolo Bonzini Cc: Radim Krčmář Signed-off-by: Wanpeng Li Fixes: 52017608da33 ("KVM: nVMX: add option to perform early consistency checks via H/W") Cc: stable@vger.kernel.org Reviewed-by: Sean Christopherson Signed-off-by: Paolo Bonzini Signed-off-by: Greg Kroah-Hartman --- arch/x86/kvm/vmx/nested.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/arch/x86/kvm/vmx/nested.c +++ b/arch/x86/kvm/vmx/nested.c @@ -2792,14 +2792,13 @@ static int nested_vmx_check_vmentry_hw(s : "cc", "memory" ); - preempt_enable(); - if (vmx->msr_autoload.host.nr) vmcs_write32(VM_EXIT_MSR_LOAD_COUNT, vmx->msr_autoload.host.nr); if (vmx->msr_autoload.guest.nr) vmcs_write32(VM_ENTRY_MSR_LOAD_COUNT, vmx->msr_autoload.guest.nr); if (vm_fail) { + preempt_enable(); WARN_ON_ONCE(vmcs_read32(VM_INSTRUCTION_ERROR) != VMXERR_ENTRY_INVALID_CONTROL_FIELD); return 1; @@ -2811,6 +2810,7 @@ static int nested_vmx_check_vmentry_hw(s local_irq_enable(); if (hw_breakpoint_active()) set_debugreg(__this_cpu_read(cpu_dr7), 7); + preempt_enable(); /* * A non-failing VMEntry means we somehow entered guest mode with