From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,USER_AGENT_GIT autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0F68FC43603 for ; Mon, 16 Dec 2019 08:47:41 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D05D0207FF for ; Mon, 16 Dec 2019 08:47:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="X1ui1+qg" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D05D0207FF Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=yvmJyzFGf8lHYw3YXoD8hGKI1Lp5OjIIo6yfD47C4dA=; b=X1u i1+qg9SaxQDUXYkHKr2HUp8OthTQU4zX+wcemhdqoC7VbGR9hPZkhVDho25l+V6eyOtxY5y1kEPZk 3jVZentu0S1nJ3HmLLA6y6XRVf1b0/zPV/eVyVNDavFNrwJP3IwPtLChhaDNlovoTDqmKr33Urmx7 hDfg5YPEtz0NaH23chRDr8X+6mNANos0TJEPOZqnvdFc0TY8xal3YZO5OABPNLOTEQThNr46xamTP ukY5V5ZECve8AV47eeOMEv7nf1SLdXc/XW+L+3kyJ769i/LaWt3NFs857ImLAEkQCP0bX6TwZEg9s mKA6yyrBs3Idvu39oHaprD9sLa2sjnw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1igm2W-0004AD-AE; Mon, 16 Dec 2019 08:47:40 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1igm2S-00049Q-QF for linux-arm-kernel@lists.infradead.org; Mon, 16 Dec 2019 08:47:39 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id CA31B1007; Mon, 16 Dec 2019 00:47:33 -0800 (PST) Received: from a075553-lin.blr.arm.com (a075553-lin.blr.arm.com [10.162.0.144]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 138E23F6CF; Mon, 16 Dec 2019 00:50:44 -0800 (PST) From: Amit Daniel Kachhap To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v3 00/16] arm64: return address signing Date: Mon, 16 Dec 2019 14:17:02 +0530 Message-Id: <1576486038-9899-1-git-send-email-amit.kachhap@arm.com> X-Mailer: git-send-email 2.7.4 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191216_004736_941004_60E0C0FE X-CRM114-Status: GOOD ( 13.31 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Kees Cook , Suzuki K Poulose , Catalin Marinas , Ard Biesheuvel , Richard Henderson , Kristina Martsenko , James Morse , Ramana Radhakrishnan , Amit Daniel Kachhap , Mark Brown , Vincenzo Frascino , Will Deacon , Dave Martin MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi, This series improves function return address protection for the arm64 kernel, by compiling the kernel with ARMv8.3 Pointer Authentication instructions (referred ptrauth hereafter). This should help protect the kernel against attacks using return-oriented programming. This series is based on v5.5-rc2. High-level changes since v2 [1] (detailed changes are in individual patches): - Added support to generate randomness for ptrauth keys for early booting task in primary core as suggested by Ard. - Modified lkdtm ptrauth test-case to change keys to cause crash instead of modifying the lr in the stack. - Resolved a clang compilation issue. - Re-positioned "arm64: rename ptrauth key structures to be user-specific" to reduce code churnings. This series do not implement few things or have known limitations: - kdump tools may need some rework to work with ptrauth. The kdump tools may need the ptrauth information to strip PAC bits. Feedback welcome! Thanks, Amit Daniel [1]: http://lists.infradead.org/pipermail/linux-arm-kernel/2019-November/695089.html Amit Daniel Kachhap (8): arm64: create macro to park cpu in an infinite loop arm64: ptrauth: Add bootup/runtime flags for __cpu_setup arm64: initialize ptrauth keys for kernel booting task arm64: mask PAC bits of __builtin_return_address arm64: __show_regs: strip PAC from lr in printk arm64: suspend: restore the kernel ptrauth keys arm64: kprobe: disable probe of ptrauth instruction lkdtm: arm64: test kernel pointer authentication Kristina Martsenko (6): arm64: cpufeature: add pointer auth meta-capabilities arm64: rename ptrauth key structures to be user-specific arm64: install user ptrauth keys at kernel exit time arm64: enable ptrauth earlier arm64: initialize and switch ptrauth kernel keys arm64: compile the kernel with ptrauth return address signing Mark Rutland (1): arm64: unwind: strip PAC from kernel addresses Vincenzo Frascino (1): kconfig: Add support for 'as-option' arch/arm64/Kconfig | 27 +++++++++++- arch/arm64/Makefile | 11 +++++ arch/arm64/include/asm/asm_pointer_auth.h | 59 ++++++++++++++++++++++++++ arch/arm64/include/asm/compiler.h | 20 +++++++++ arch/arm64/include/asm/cpucaps.h | 4 +- arch/arm64/include/asm/cpufeature.h | 6 +-- arch/arm64/include/asm/insn.h | 13 +++--- arch/arm64/include/asm/pointer_auth.h | 54 ++++++++++++------------ arch/arm64/include/asm/processor.h | 3 +- arch/arm64/include/asm/smp.h | 10 +++++ arch/arm64/include/asm/stackprotector.h | 5 +++ arch/arm64/kernel/asm-offsets.c | 16 +++++++ arch/arm64/kernel/cpufeature.c | 30 ++++++++++---- arch/arm64/kernel/entry.S | 6 +++ arch/arm64/kernel/head.S | 47 +++++++++++++++------ arch/arm64/kernel/insn.c | 1 + arch/arm64/kernel/pointer_auth.c | 7 +--- arch/arm64/kernel/probes/decode-insn.c | 2 +- arch/arm64/kernel/process.c | 5 ++- arch/arm64/kernel/ptrace.c | 16 +++---- arch/arm64/kernel/sleep.S | 8 ++++ arch/arm64/kernel/smp.c | 10 +++++ arch/arm64/kernel/stacktrace.c | 3 ++ arch/arm64/mm/proc.S | 69 ++++++++++++++++++++++++++----- drivers/misc/lkdtm/bugs.c | 36 ++++++++++++++++ drivers/misc/lkdtm/core.c | 1 + drivers/misc/lkdtm/lkdtm.h | 1 + include/linux/stackprotector.h | 2 +- scripts/Kconfig.include | 4 ++ 29 files changed, 388 insertions(+), 88 deletions(-) create mode 100644 arch/arm64/include/asm/asm_pointer_auth.h create mode 100644 arch/arm64/include/asm/compiler.h -- 2.7.4 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel