Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp6110568pxv; Thu, 29 Jul 2021 06:48:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwcwuAVN4FU1t13MF8jsu/sDBAhAWexk4Aisy+3UzP0HwLPNaeZousR/M7lJrN3tu5odKOR X-Received: by 2002:a05:6402:1cb6:: with SMTP id cz22mr6075402edb.148.1627566485471; Thu, 29 Jul 2021 06:48:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1627566485; cv=none; d=google.com; s=arc-20160816; b=TMYaJdZ6VvzisZokaWrEg221GfOxaz8hjknpV+qc0tGkbG/HpYK0WFVmzyf/Khylz/ GiYtvI4UjsM1xSe6zqK/cFtUnSqq11otfWTXKoeIHzqL/TxURClsvICvB8piu6W/wGkI 4zrkc0VoOXTX1Zla4Qdvad+nRgCg/zE4kbNvfHMGrD5E9dcbuphJZ3BFbVOCrtPZd1bY P5+rR6tcfFpnKZjyAnFho+QdWAnifLqCAMxHMCCoTcSWA1YNrbwXsnPSfl/9i9KSjKu3 N0siFdLfbfApm8Uzbk5fC1haaZmBAk93s1ZyzxA44sJ/ktOGZK6fzjNoXT45/8T9wt/E gMaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=0CIbZBRnONYiA447uRDm/13rQXtYkWjFaiYlPSH6c7E=; b=ehF5POY/U8I7ous45qMq82I2uuwBK22j3XydV//Gq8K4AI3TVbFzTGkazkrfx3DCxW MyP71f9tIuBPyU3umZdqvwzTjrlaXS4fdmBPrypnbnffXIWs+XFe+8KEOc8ns4gug3/c PTY/JtuwTm9rrW6iSyprjxUo0RA7T5JAZG69/ADYROgzil44l5VU2E4yWviSbd1sATaT m6Ry9EEwOBKXqVcHMLswAHn7S/IpZXMwkzA2WTzoXWsNVkyVc+ZZwFRVnZKSdx0k7BSM BPD/MWwWRL3NMO+yiZedijeUqb/hminvfn2nm5Wu+JACpT7RY6vPOBstoTd8/EqYd/6r 8EiA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@messagingengine.com header.s=fm3 header.b=XFImyIq4; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=oracle.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id jg41si3384748ejc.395.2021.07.29.06.47.32; Thu, 29 Jul 2021 06:48:05 -0700 (PDT) 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; dkim=pass header.i=@messagingengine.com header.s=fm3 header.b=XFImyIq4; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237686AbhG2NqL (ORCPT + 99 others); Thu, 29 Jul 2021 09:46:11 -0400 Received: from wforward5-smtp.messagingengine.com ([64.147.123.35]:39811 "EHLO wforward5-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237662AbhG2NqK (ORCPT ); Thu, 29 Jul 2021 09:46:10 -0400 Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailforward.west.internal (Postfix) with ESMTP id 17F371AC096B; Thu, 29 Jul 2021 09:39:49 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute6.internal (MEProxy); Thu, 29 Jul 2021 09:39:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:date:from :in-reply-to:message-id:mime-version:references:subject:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; bh=0CIbZBRnONYiA447uRDm/13rQXtYkWjFaiYlPSH6c7E=; b=XFImyIq4 14q9WoyJUNEeP4LiwlypRBHwU9YLh+be/SZ6pKtAnSWpfNpqE3eDNgqkwcR/YJ1O dL3fZGmfNxhS83JVu2Cksr3sJNRzKO2yr/BAycAhxQNE4eBUqQ45v4AcsAMOY47L drDhr4zgEdKQs3y/xGV/d5SvFk3SsqbjlGfGOxcj4iUmWDb3vLdcMD8xDOYtv3Rr EKItpgl2vcRgSIMRg7NQouVb/Q8DOq15A4upAFFdShHdpZTtHOw21O+38SPD0rIq YypTrBgbRsPJo7WzU1vTSZ9+O7audLzNFYKcGUu2jeb7y9Ksp/0eWwa/kJreDqWz kIgYC1IcV4y7DA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvtddrheefgddviecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepffgrvhhiugcu gfgumhhonhgushhonhcuoegurghvihgurdgvughmohhnughsohhnsehorhgrtghlvgdrtg homheqnecuggftrfgrthhtvghrnhepudefteejgfefhfdtjefhhedtffethfetkeehgfel heffhfeihfeglefgjedtheeknecuvehluhhsthgvrhfuihiivgepudenucfrrghrrghmpe hmrghilhhfrhhomhepuggrvhhiugdrvggumhhonhgushhonhesohhrrggtlhgvrdgtohhm X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 29 Jul 2021 09:39:47 -0400 (EDT) Received: from localhost (disaster-area.hh.sledj.net [local]) by disaster-area.hh.sledj.net (OpenSMTPD) with ESMTPA id 8362cc54; Thu, 29 Jul 2021 13:39:32 +0000 (UTC) From: David Edmondson To: linux-kernel@vger.kernel.org Cc: Thomas Gleixner , Joerg Roedel , Ingo Molnar , Jim Mattson , kvm@vger.kernel.org, Borislav Petkov , David Matlack , Paolo Bonzini , "H. Peter Anvin" , x86@kernel.org, Wanpeng Li , Vitaly Kuznetsov , Sean Christopherson , David Edmondson Subject: [PATCH v3 3/3] KVM: x86: SGX must obey the KVM_INTERNAL_ERROR_EMULATION protocol Date: Thu, 29 Jul 2021 14:39:31 +0100 Message-Id: <20210729133931.1129696-4-david.edmondson@oracle.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210729133931.1129696-1-david.edmondson@oracle.com> References: <20210729133931.1129696-1-david.edmondson@oracle.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When passing the failing address and size out to user space, SGX must ensure not to trample on the earlier fields of the emulation_failure sub-union of struct kvm_run. Signed-off-by: David Edmondson --- arch/x86/kvm/vmx/sgx.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/arch/x86/kvm/vmx/sgx.c b/arch/x86/kvm/vmx/sgx.c index 6693ebdc0770..63fb93163383 100644 --- a/arch/x86/kvm/vmx/sgx.c +++ b/arch/x86/kvm/vmx/sgx.c @@ -53,11 +53,9 @@ static int sgx_get_encls_gva(struct kvm_vcpu *vcpu, unsigned long offset, static void sgx_handle_emulation_failure(struct kvm_vcpu *vcpu, u64 addr, unsigned int size) { - vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR; - vcpu->run->internal.suberror = KVM_INTERNAL_ERROR_EMULATION; - vcpu->run->internal.ndata = 2; - vcpu->run->internal.data[0] = addr; - vcpu->run->internal.data[1] = size; + uint64_t data[2] = { addr, size }; + + kvm_prepare_emulation_failure_exit(vcpu, false, data, sizeof(data)); } static int sgx_read_hva(struct kvm_vcpu *vcpu, unsigned long hva, void *data, -- 2.30.2