Received: by 10.223.176.46 with SMTP id f43csp2677540wra; Mon, 22 Jan 2018 01:24:52 -0800 (PST) X-Google-Smtp-Source: AH8x224ieWDXV/7rZ96VNvWCxwVm4u0OMlieyw2/Rpc8E+vZHbWb0ti0iai5sJ3pOngP8TJ6e41/ X-Received: by 10.99.126.84 with SMTP id o20mr6701687pgn.329.1516613092687; Mon, 22 Jan 2018 01:24:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516613092; cv=none; d=google.com; s=arc-20160816; b=cWG1YqEM5wu/7dqcP7efwIZUkB2HY5ZKk2g0/wi8go1P0DohSsU2qCP9NJd4rAiNoB sPmO6gm3kLeTVWdITZsRO3x9tfEnrJ9YdwdlEKpkETUBxwAprZbt54/poP2/L4ViXHdC tERyDM7Hnqa5AdPgt94rfN4SaHA3Jj7rjjkshRq83XGTl2VtcnJ8fNwkXUHJH2ECuUds V9GaBSKQc1H7Wgx0kPUaIDQlJEFNrAf7EJJpO8l8HZnkJ9AzJTio2cPVluYVMsltZbwA 5WmvuewGscsgJ0rGUkfFlsD+UXAGQpaTqmkFQZJqMmCBuueEAWnABPkpRZfqeDDQIPnJ qeMA== 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=piiB6N82i3eiHhV8Z8ZSjegi1fUqGxkCU0oE5/SEKbQ=; b=UPPWDhVHvxe/EonYi1OVcHectuyPehKeXNns1IEfY3tZrTJlUpmQadw4jxX/yBZXfU 24oUsX+l2uIhZO+8d3mpDEB+VHxGBI16iJWN8CyqBX+2QS3OKlSV7EM3eVWG3WeNogNy WzI3sCNyckzK/NgiWKdZ8SOzbdDQmtUTc3f4j9x2c5YKpblL43QY07G1haHO5hELLXI+ CA+Q2bDgl/cWqdRPmxRMIgNFEWLxCybNpzqlsAVjZlFL52M88ZFn+uEURAqTK0jTunP9 EN1TJffzApKbeS18yN4Row/AcP9WbeQNwRU+1fLKlrSXv30Z6ZvX//5CRZRRmXPS1eFQ gNJA== 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 t4si12964369pgr.205.2018.01.22.01.24.38; Mon, 22 Jan 2018 01:24:52 -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 S1752471AbeAVItI (ORCPT + 99 others); Mon, 22 Jan 2018 03:49:08 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:60592 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752448AbeAVItG (ORCPT ); Mon, 22 Jan 2018 03:49:06 -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 41028E10; Mon, 22 Jan 2018 08:49:06 +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.9 39/47] arm64: KVM: Fix SMCCC handling of unimplemented SMC/HVC calls Date: Mon, 22 Jan 2018 09:45:50 +0100 Message-Id: <20180122083928.537571527@linuxfoundation.org> X-Mailer: git-send-email 2.16.0 In-Reply-To: <20180122083925.568134913@linuxfoundation.org> References: <20180122083925.568134913@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.9-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; }