From patchwork Tue Jan 30 16:14:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julien Grall X-Patchwork-Id: 126280 Delivered-To: patch@linaro.org Received: by 10.46.84.92 with SMTP id y28csp3499741ljd; Tue, 30 Jan 2018 08:17:12 -0800 (PST) X-Google-Smtp-Source: AH8x227Vi+ALbQSSixDTZOjws7HAKCSKoSz9NtKZyiP4JZ0KCJFrn6VCU30kHLEaGmip18TR/ONu X-Received: by 10.107.18.225 with SMTP id 94mr31988663ios.23.1517329032826; Tue, 30 Jan 2018 08:17:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517329032; cv=none; d=google.com; s=arc-20160816; b=qNRL4aHjYKFRm/WetLxkbmXolTztnWLBwRq/RpxZFyVjETt2JWJYshcUgRzfph4QbE IBTeWSnF+MxeQWzPj8c6ozzop8+Zee+fiYHNUsPx1wbdkX9/YNrrIHltaZahMoiQSnjx U5WE2SpTLRibKI4zdpi4l+KAyfsEh7txeyqV3WseB4WVVKNmPESYhiziA+NtTTYgNj9w waqlB7/2S5QC4WRR9Ox7Rutdv7kCaE2X3Z+YujNLR01hqxWOeSgqqQzH+pgI15lYVYWQ 4x9kJISQv+u1vw8aCwFYUwBjSQ7hPktxXCB1oYXQpxQ+0ZA0oWLBXkssRMBpfyUGmz8G pC9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version :list-subscribe:list-help:list-post:list-unsubscribe:list-id :precedence:subject:cc:references:in-reply-to:message-id:date:to :from:arc-authentication-results; bh=YZxDAyCLGw4I5HK2CKATABKmA36eJ9G8oSPQRs3ngmY=; b=o5ukwpn2XbIm26kzkJvUF3COLRsDb3fUYzA4YxBlRE1m0rvSqKtAg5Ow9JLHwcXNG3 D6IO4DSnJ7HLlx56YGRArqIBtpjPyzGOhCEg+Yofz9Yom0nT9cHHlxIaZ7SoJEQSpr9P 8tfvDqj/s+vK8Mmg9fZvef3q9HGEhAsU2rIARnqLKfpNpWAIuljSfAa70OW0RnKSP+fD CSJajWzyXfxh5HZh2673Itb84gy0SLi3vF8EDvgw0pBc0jbXQL2OUfkmFEz31S/ksO43 kqgj4x20+TocQtFoHAuDaOBYZqiHBa+ewrveRdByvONgIHmqNMNJ6IEEsnGbsAM2Mlzo Yp5g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of xen-devel-bounces@lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org. [192.237.175.120]) by mx.google.com with ESMTPS id z192si5545601iod.163.2018.01.30.08.17.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 30 Jan 2018 08:17:12 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of xen-devel-bounces@lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of xen-devel-bounces@lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1egYYd-0008Pz-1e; Tue, 30 Jan 2018 16:14:51 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1egYYb-0008OQ-7n for xen-devel@lists.xen.org; Tue, 30 Jan 2018 16:14:49 +0000 X-Inumbo-ID: be3111a4-05d8-11e8-b9b1-635ca7ef6cff Received: from foss.arm.com (unknown [217.140.101.70]) by us1-amaz-eas1.inumbo.com (Halon) with ESMTP id be3111a4-05d8-11e8-b9b1-635ca7ef6cff; Tue, 30 Jan 2018 16:15:09 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 43C5A15AB; Tue, 30 Jan 2018 08:14:43 -0800 (PST) Received: from e108454-lin.cambridge.arm.com (e108454-lin.cambridge.arm.com [10.1.206.53]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 349BF3F25C; Tue, 30 Jan 2018 08:14:42 -0800 (PST) From: Julien Grall To: xen-devel@lists.xen.org Date: Tue, 30 Jan 2018 16:14:33 +0000 Message-Id: <20180130161433.6910-4-julien.grall@arm.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180130161433.6910-1-julien.grall@arm.com> References: <20180130161433.6910-1-julien.grall@arm.com> Cc: andrew.cooper3@citrix.com, Julien Grall , sstabellini@kernel.org, andre.przywara@linaro.org Subject: [Xen-devel] [PATCH 3/3] xen/arm: Don't crash the domain on invalid HVC immediate X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" domain_crash_synchronous() should only be used when something went wrong in Xen. It is better to inject to the guest as it will be in better position to provide helpful information (stack trace...). Signed-off-by: Julien Grall Reviewed-by: Stefano Stabellini --- We potentially want to return -1 instead. This would make Xen more future-proof if we decide to implement the other HVC immediate. --- xen/arch/arm/traps.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c index 843adf4959..18da45dff3 100644 --- a/xen/arch/arm/traps.c +++ b/xen/arch/arm/traps.c @@ -1473,14 +1473,17 @@ static void do_debug_trap(struct cpu_user_regs *regs, unsigned int code) #endif static void do_trap_hypercall(struct cpu_user_regs *regs, register_t *nr, - unsigned long iss) + const union hsr hsr) { arm_hypercall_fn_t call = NULL; BUILD_BUG_ON(NR_hypercalls < ARRAY_SIZE(arm_hypercall_table) ); - if ( iss != XEN_HYPERCALL_TAG ) - domain_crash_synchronous(); + if ( hsr.iss != XEN_HYPERCALL_TAG ) + { + gprintk(XENLOG_WARNING, "Invalid HVC imm 0x%x\n", hsr.iss); + return inject_undef_exception(regs, hsr); + } if ( *nr >= ARRAY_SIZE(arm_hypercall_table) ) { @@ -2150,7 +2153,7 @@ void do_trap_guest_sync(struct cpu_user_regs *regs) if ( hsr.iss == 0 ) return do_trap_hvc_smccc(regs); nr = regs->r12; - do_trap_hypercall(regs, &nr, hsr.iss); + do_trap_hypercall(regs, &nr, hsr); regs->r12 = (uint32_t)nr; break; } @@ -2164,7 +2167,7 @@ void do_trap_guest_sync(struct cpu_user_regs *regs) #endif if ( hsr.iss == 0 ) return do_trap_hvc_smccc(regs); - do_trap_hypercall(regs, ®s->x16, hsr.iss); + do_trap_hypercall(regs, ®s->x16, hsr); break; case HSR_EC_SMC64: /*