Received: by 10.223.176.46 with SMTP id f43csp2654549wra; Mon, 22 Jan 2018 00:59:45 -0800 (PST) X-Google-Smtp-Source: AH8x224RME3LmVuXfSIj7Uh322HSxyd4ePZg9SGF/TnYsmn7OlxMWZS3OAvgeYx+gD5UlrRmz9OK X-Received: by 2002:a17:902:9002:: with SMTP id a2-v6mr2982496plp.331.1516611585481; Mon, 22 Jan 2018 00:59:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516611585; cv=none; d=google.com; s=arc-20160816; b=tVDODUljVIFKT4wrlzDW34yOpjyfEEzvrgoYT3RW4JjlyInl9uGDbFUBf6XTkkbW8S UHlNc/XItrDEgaepUw2WP8NWtvwxIVrNb/yJbCDGy9yIi0I/bOscWQbB7W4pv2zbLH7/ NgL9Yd1hgWZ/73fUbm8kC7ePjcQkADOyB1rXk9eWJ+3FMcP+MdUtDqbUGsRfkmBRRJNr h8Tz6bmNpctq2dzreEN0ROGooCR/9aCKtBctMf8VUhViWx461+SDAn4QTVrNVE0HMft7 Ayw9eV3wJ+f0XZiI+MlphYYdSSkOFsDurszSzti5SVm8jmLDqa4z5q30ETprqDKl5QwA g7Ig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=Gd1u0J7kIhAXMwtSMBs5jCG1SdiLyFNlDoQkaRwaOSE=; b=K89ceds7f+lTyEkXol9DRA9rlNRN/j+YkddBrzC38p6dfd5njY4FODWOp2LCtmPcS7 l3R+ZJTOqg1Tcm3cdnpuXK+l9TWJuGqXxcVMUx8QnqOa72OsjdMUcWZt9VF6A+NrybDs Y5aC7lCGWYoBfbwU9k4cNsLxLuOjR8xsg7ZZ4/egb3HWp5mEX+gzkYmPubYzvT5mo5Tq Pl4VZbvBaObBImmMrQKnbwYaqe9V/Tzmmn2I+/7u7t95OdSbFH+MxlckwzFo/qdTieYJ oMX/0rIDL6/iAz4K992fpGKCuvsTbpaxTueDfvYo/JAlJhFGWEI7zLnvAJPQfzXNklud I0/A== ARC-Authentication-Results: i=1; mx.google.com; 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 m6si14968287pfm.340.2018.01.22.00.59.31; Mon, 22 Jan 2018 00:59:45 -0800 (PST) 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; 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 S1753830AbeAVI6d (ORCPT + 99 others); Mon, 22 Jan 2018 03:58:33 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:34156 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753702AbeAVIyJ (ORCPT ); Mon, 22 Jan 2018 03:54:09 -0500 Received: from localhost (LFbn-1-12258-90.w90-92.abo.wanadoo.fr [90.92.71.90]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id A9D9DF2B; Mon, 22 Jan 2018 08:54:08 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Marc Zyngier , Christoffer Dall Subject: [PATCH 4.14 80/89] arm64: KVM: Fix SMCCC handling of unimplemented SMC/HVC calls Date: Mon, 22 Jan 2018 09:46:00 +0100 Message-Id: <20180122084002.470774698@linuxfoundation.org> X-Mailer: git-send-email 2.16.0 In-Reply-To: <20180122083954.683903493@linuxfoundation.org> References: <20180122083954.683903493@linuxfoundation.org> User-Agent: quilt/0.65 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Marc Zyngier commit acfb3b883f6d6a4b5d27ad7fdded11f6a09ae6dd upstream. KVM doesn't follow the SMCCC when it comes to unimplemented calls, and inject an UNDEF instead of returning an error. Since firmware calls are now used for security mitigation, they are becoming more common, and the undef is counter productive. Instead, let's follow the SMCCC which states that -1 must be returned to the caller when getting an unknown function number. Signed-off-by: Marc Zyngier Signed-off-by: Christoffer Dall Signed-off-by: Greg Kroah-Hartman --- arch/arm64/kvm/handle_exit.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/arch/arm64/kvm/handle_exit.c +++ b/arch/arm64/kvm/handle_exit.c @@ -44,7 +44,7 @@ static int handle_hvc(struct kvm_vcpu *v ret = kvm_psci_call(vcpu); if (ret < 0) { - kvm_inject_undefined(vcpu); + vcpu_set_reg(vcpu, 0, ~0UL); return 1; } @@ -53,7 +53,7 @@ static int handle_hvc(struct kvm_vcpu *v static int handle_smc(struct kvm_vcpu *vcpu, struct kvm_run *run) { - kvm_inject_undefined(vcpu); + vcpu_set_reg(vcpu, 0, ~0UL); return 1; }