Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp3942545ybx; Mon, 4 Nov 2019 05:23:08 -0800 (PST) X-Google-Smtp-Source: APXvYqzdLE/iMbZDzfxTI8s/fAtOltQ0SqWWiqqOQRQHvB7FWdBOJgwb+B2p0A4ol2gunBlo4HiY X-Received: by 2002:a50:85cd:: with SMTP id q13mr9416032edh.152.1572873788770; Mon, 04 Nov 2019 05:23:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1572873788; cv=none; d=google.com; s=arc-20160816; b=UV0nOQdFIsYL+cKBAD489xIZhLCRSt9eK6mAe790q8Fq/J71syEyS01ojEWU7yA5F+ 7hmWxvK00Zzjd03wZUiARAG2SEJdy/yw0ie6P+ZF2zSImahta3RqZsDnTQXA8YI17YA0 xTlFH6UkRvV6Ti11ar8y/OBj6W0dPVH71c+Yyc/wkia1OsbYEJlTYjBjZxxXwA6az+up OwPr7N6RPTgLnF36LofrE2M+sNknZoWidfF0AGtlqAJqmuceozMlym/znRjiPKlbCux+ 2urooGT9T2nlIQ5RrLLOzGfbWbkqLUi3JFzBqS1KxKzqLZ+bX8UK8IMQpSLK7NdkG9u9 3LPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:message-id:references :in-reply-to:cc:from:date:content-transfer-encoding:mime-version :subject:to; bh=QHoowyApQ+0wfVOB40kteXKux+HppTqKUYwxAKKgqJE=; b=Ie90yiRgtGW+dmFKEvUeKTm1tXf+2Y2V+IBJpF3rzwY0ZF2LTQF8UQMtvPFd/fVbiW IVS9RMxnG07Mcqx3h5Z/Ftxm1LMInZj02NJtVHvLuAR17ZAlJW85u8ZE53LEeRQcUetk tOub9FIbb9rSDCd7rVji/dRh8LsSEt4f/LLcsXmRCTXPPsP03+RnhmxV9ciM+JQ6A1Dp Cqeg2ZkrTjUvQ6oMdD5FjK3Jrxh6HHT+SFD2ioVrx7JR1F+ymi3KYqAufTkfXVjgS8oo GBgTFovo5LJy471deQOcVbbIOitYqJZa4mufouqsRNkquB/D6IVI97gKJiW8cZ0IQjgV t/gg== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d51si7413652ede.168.2019.11.04.05.22.44; Mon, 04 Nov 2019 05:23:08 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729291AbfKDNVJ (ORCPT + 99 others); Mon, 4 Nov 2019 08:21:09 -0500 Received: from inca-roads.misterjones.org ([213.251.177.50]:45446 "EHLO inca-roads.misterjones.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727454AbfKDNVI (ORCPT ); Mon, 4 Nov 2019 08:21:08 -0500 Received: from www-data by cheepnis.misterjones.org with local (Exim 4.80) (envelope-from ) id 1iRcHe-00058k-W2; Mon, 04 Nov 2019 14:20:39 +0100 To: Sami Tolvanen Subject: Re: [PATCH v4 13/17] arm64: preserve x18 when CPU is suspended X-PHP-Originating-Script: 0:main.inc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Date: Mon, 04 Nov 2019 14:29:59 +0109 From: Marc Zyngier Cc: Will Deacon , Catalin Marinas , Steven Rostedt , Masami Hiramatsu , Ard Biesheuvel , Dave Martin , Kees Cook , Laura Abbott , Mark Rutland , Nick Desaulniers , Jann Horn , Miguel Ojeda , Masahiro Yamada , , , , In-Reply-To: <20191101221150.116536-14-samitolvanen@google.com> References: <20191018161033.261971-1-samitolvanen@google.com> <20191101221150.116536-1-samitolvanen@google.com> <20191101221150.116536-14-samitolvanen@google.com> Message-ID: <02c56a5273f94e9d832182f1b3cb5097@www.loen.fr> X-Sender: maz@kernel.org User-Agent: Roundcube Webmail/0.7.2 X-SA-Exim-Connect-IP: X-SA-Exim-Rcpt-To: samitolvanen@google.com, will@kernel.org, catalin.marinas@arm.com, rostedt@goodmis.org, mhiramat@kernel.org, ard.biesheuvel@linaro.org, dave.martin@arm.com, keescook@chromium.org, labbott@redhat.com, mark.rutland@arm.com, ndesaulniers@google.com, jannh@google.com, miguel.ojeda.sandonis@gmail.com, yamada.masahiro@socionext.com, clang-built-linux@googlegroups.com, kernel-hardening@lists.openwall.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on cheepnis.misterjones.org); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2019-11-01 23:21, Sami Tolvanen wrote: > Don't lose the current task's shadow stack when the CPU is suspended. > > Signed-off-by: Sami Tolvanen > Reviewed-by: Nick Desaulniers > Reviewed-by: Kees Cook > --- > arch/arm64/include/asm/suspend.h | 2 +- > arch/arm64/mm/proc.S | 10 ++++++++++ > 2 files changed, 11 insertions(+), 1 deletion(-) > > diff --git a/arch/arm64/include/asm/suspend.h > b/arch/arm64/include/asm/suspend.h > index 8939c87c4dce..0cde2f473971 100644 > --- a/arch/arm64/include/asm/suspend.h > +++ b/arch/arm64/include/asm/suspend.h > @@ -2,7 +2,7 @@ > #ifndef __ASM_SUSPEND_H > #define __ASM_SUSPEND_H > > -#define NR_CTX_REGS 12 > +#define NR_CTX_REGS 13 > #define NR_CALLEE_SAVED_REGS 12 > > /* > diff --git a/arch/arm64/mm/proc.S b/arch/arm64/mm/proc.S > index fdabf40a83c8..5616dc52a033 100644 > --- a/arch/arm64/mm/proc.S > +++ b/arch/arm64/mm/proc.S > @@ -49,6 +49,8 @@ > * cpu_do_suspend - save CPU registers context > * > * x0: virtual address of context pointer > + * > + * This must be kept in sync with struct cpu_suspend_ctx in > . > */ > ENTRY(cpu_do_suspend) > mrs x2, tpidr_el0 > @@ -73,6 +75,9 @@ alternative_endif > stp x8, x9, [x0, #48] > stp x10, x11, [x0, #64] > stp x12, x13, [x0, #80] > +#ifdef CONFIG_SHADOW_CALL_STACK > + str x18, [x0, #96] > +#endif Do we need the #ifdefery here? We didn't add that to the KVM path, and I'd feel better having a single behaviour, specially when NR_CTX_REGS is unconditionally sized to hold 13 regs. > ret > ENDPROC(cpu_do_suspend) > > @@ -89,6 +94,11 @@ ENTRY(cpu_do_resume) > ldp x9, x10, [x0, #48] > ldp x11, x12, [x0, #64] > ldp x13, x14, [x0, #80] > +#ifdef CONFIG_SHADOW_CALL_STACK > + ldr x18, [x0, #96] > + /* Clear the SCS pointer from the state buffer */ > + str xzr, [x0, #96] > +#endif > msr tpidr_el0, x2 > msr tpidrro_el0, x3 > msr contextidr_el1, x4 Thanks, M. -- Jazz is not dead. It just smells funny...