From patchwork Mon May 14 09:46:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Rutland X-Patchwork-Id: 135710 Delivered-To: patch@linaro.org Received: by 2002:a2e:9706:0:0:0:0:0 with SMTP id r6-v6csp1532032lji; Mon, 14 May 2018 02:47:58 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqlYOWuQ/wlYUZ3cU7HIIW8AsJAwYBegn53druJhF09gt3/5j96pFHznIcAYPIfciwbRT75 X-Received: by 2002:a65:5bcc:: with SMTP id o12-v6mr7863670pgr.449.1526291278752; Mon, 14 May 2018 02:47:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526291278; cv=none; d=google.com; s=arc-20160816; b=eENaKx0SWhA4Qgi0wnkvp1mfVEc04dkSDntm4AvqHh/ySQ9RjJIFcxAhfpSiJlyh5S RlUvQ4LUta1L4KJP3m4DDP/ownxQF58zc54sluFTiCUuKV6JDRMg4DpWEuNCJXA0buDQ AF/cjErpc23l2LudyCwPI03X+wa8JaXGKrhYiry79UxtEGZrGcCWPhRW2l6Hx5HQYsA8 Bm8OT49SoPI0k+SnHsXXmmZUVFKuzM9haO7lgPbflV41e6k7dh6lFOZnFSqFdp1qilJS wZUlsejMNMJb64VIhkNY5N8LOBkGMXcYv3N6nIjW2T9QJaZbXa2OO0HIEFg9DXFGsKpQ nTNA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=W7XMg/lwEEiIDgDtBiAUyCkD5MyaIOw3SqRSipqzz6c=; b=zc9/PwPfyME+IoU8XCnrVeoe3CLxFLOJe+frK+rBvNOSUE/ofIHJhfPDapFUkkag/W V5dWVGzmWn5JSg7cuRv7m2+lnTBDb06BrR65/AUJzDKn7gGbQRqnPaL49HN+E8lmU+pJ KqAD7ZWJ+b5gxCUd/cgdPFpARPZOjxgmW4n8GWFdrrbl5VctRG2SyDLgw7Mkm3Z1leFr x8czt/mSGo6gKi1xZ/GXResUi6iF5UNxNwV4EeCO2RpJv5OJpfP5omDFgpNsK/PHRSlZ I/2l8v2kUBndEzmoki3Zq1adEd0ebSK2nisqLPHHe+u7a5KrH50ZOXw8cIGicOxa4PUs oVdQ== 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 b9-v6si7498080pgw.394.2018.05.14.02.47.58; Mon, 14 May 2018 02:47:58 -0700 (PDT) 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 S1752640AbeENJry (ORCPT + 29 others); Mon, 14 May 2018 05:47:54 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:38300 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752611AbeENJru (ORCPT ); Mon, 14 May 2018 05:47:50 -0400 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 A1B2E174E; Mon, 14 May 2018 02:47:50 -0700 (PDT) Received: from lakrids.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id ABC383F25D; Mon, 14 May 2018 02:47:48 -0700 (PDT) From: Mark Rutland To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, catalin.marinas@arm.com, dave.martin@arm.com, james.morse@arm.com, linux@dominikbrodowski.net, linux-fsdevel@vger.kernel.org, marc.zyngier@arm.com, mark.rutland@arm.com, viro@zeniv.linux.org.uk, will.deacon@arm.com Subject: [PATCH 11/18] arm64: zero GPRs upon entry from EL0 Date: Mon, 14 May 2018 10:46:33 +0100 Message-Id: <20180514094640.27569-12-mark.rutland@arm.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180514094640.27569-1-mark.rutland@arm.com> References: <20180514094640.27569-1-mark.rutland@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We can zero GPRs x0 - x29 upon entry from EL0 to make it harder for userspace to control values consumed by speculative gadgets. We don't blat x30, since this is stashed much later, and we'll blat it before invoking C code. Signed-off-by: Mark Rutland Cc: Catalin Marinas Cc: Will Deacon --- arch/arm64/kernel/entry.S | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) -- 2.11.0 diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S index 13afefbf608f..4dd529fd03fd 100644 --- a/arch/arm64/kernel/entry.S +++ b/arch/arm64/kernel/entry.S @@ -62,6 +62,12 @@ #endif .endm + .macro clear_gp_regs + .irp n,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29 + mov x\n, xzr + .endr + .endm + /* * Bad Abort numbers *----------------- @@ -158,12 +164,11 @@ alternative_else_nop_endif stp x28, x29, [sp, #16 * 14] .if \el == 0 + clear_gp_regs mrs x21, sp_el0 ldr_this_cpu tsk, __entry_task, x20 // Ensure MDSCR_EL1.SS is clear, ldr x19, [tsk, #TSK_TI_FLAGS] // since we can unmask debug disable_step_tsk x19, x20 // exceptions when scheduling. - - mov x29, xzr // fp pointed to user-space .else add x21, sp, #S_FRAME_SIZE get_thread_info tsk