Received: by 10.223.176.5 with SMTP id f5csp3414986wra; Mon, 29 Jan 2018 12:51:02 -0800 (PST) X-Google-Smtp-Source: AH8x226+n7RlEtY5IeIGQsMZsxncdK5VlxzQ2h8G/etN/sU0QkyWNe0p76ojHAALhGoU/7D1eQ+y X-Received: by 10.99.3.71 with SMTP id 68mr22622118pgd.334.1517259062431; Mon, 29 Jan 2018 12:51:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517259062; cv=none; d=google.com; s=arc-20160816; b=dkRaDJv1ZaZgMw4nYGYC87vBpCHKwXg78X2geMUUIu/Azrvn8rBogK2ci0o1AjKeS3 oY5jOmUAjfCuwVV9u2tDNJUYo1tD6vC0j59KtrBw2QZ63XvKrLvXcyq+jgUhwDXaJVLQ 2ZAByQeQ9/CcWSSyLzHF4KL33NVrUREOCJhFEGb5VXTIzNuF8pvcPsUWZdYCTP6k4eaw 0Jputztsvm4V2WxZbZ4WNJD3aVIqJ09TmGn1DGZdldiU1zz+vKpOI2jQzfJt5cqATl9h 9ye1eprXdbPM5ho3dK608P7n+ROXLp4/0Xtnypx/ZEFwEyySM8Dq03gTw6X1LGepEyCa 3kMw== 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=3dEMW5nGus8gOKNlX3KkU51BWsv/UaQrbcliKKDp5Qg=; b=A+dOetU3x/jWSm74TycO4kweVo1+uNAcP019z5W8IPEMUXWUFhRvF1e89l9QqzHpYt JNqmp4Fbibg/4ZFVHii6mGAK2RNgQvmJCs1wLzQ0fFnRNuCp93GdgY13+FhuLXqqGSm8 kO0bGJAkr0+8ncaFflna0TRPan+M8oybZOnEdUd210KObcluFEwcobC8P5BUIPXcP/8L 6BEG8j5HOK8kSduJhKG4L303uN0k3lQyDNmm9x25I9CQ1AWrO5qvWKovr/CU9vlK/BCQ gJBG+6xK2866Q02tF3CHoaTtjkzK/Vhe4D1zTJXYJWjbNTYTgla5XQRpx28kFr6B5HxO Ax8g== 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 t24si7914676pgu.714.2018.01.29.12.50.48; Mon, 29 Jan 2018 12:51:02 -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 S1753597AbeA2UK6 (ORCPT + 99 others); Mon, 29 Jan 2018 15:10:58 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:58576 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753581AbeA2UK4 (ORCPT ); Mon, 29 Jan 2018 15:10:56 -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 C9AB22EC8; Mon, 29 Jan 2018 13:00:12 +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 3.18 18/52] arm64: KVM: Fix SMCCC handling of unimplemented SMC/HVC calls Date: Mon, 29 Jan 2018 13:56:36 +0100 Message-Id: <20180129123628.992889863@linuxfoundation.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180129123628.168904217@linuxfoundation.org> References: <20180129123628.168904217@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 3.18-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 @@ -34,7 +34,7 @@ static int handle_hvc(struct kvm_vcpu *v ret = kvm_psci_call(vcpu); if (ret < 0) { - kvm_inject_undefined(vcpu); + *vcpu_reg(vcpu, 0) = ~0UL; return 1; } @@ -43,7 +43,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_reg(vcpu, 0) = ~0UL; return 1; }