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=-13.7 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham 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 4C42EC07E9A for ; Wed, 14 Jul 2021 18:08:53 +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 0CACA61042 for ; Wed, 14 Jul 2021 18:08:53 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0CACA61042 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+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.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:List-Subscribe:List-Help: List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date:Subject:Cc: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=3huGKuKUJLsg+RBWiFHv2rbU3vuPkOu2zaAjraOoNEI=; b=o12YK9AZnoZFtf DAqt3j4smDbdLA3t70SEIOGoHJrbjPo4xoF0bsVaMairTohYYBX/fqDmrdXt6swGS5yxtelANucEF R/LyEPMxuHzZCZ5tp1NOV5pdEXT58sNcp28HrY5oLjPkDTsJj4HVITgMJMcqJCqy1p+X52T078RGy DIxM4ShhVSxdOT8wFpu+CIJcwE/5ZHGaFatc73i6PL1YmTHuRIharc6liD8lFSTtYt2PaUhvX2sGV p+ARIUhowYlm6XkQFf5GTkCvdb2krMAiL0JiglxjXN2kJtM3W6G1JjIWeLGUHdTYdD0bgH2DsOX/w 1kSTMvZ6i2BRvSXQ1EYQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1m3jHY-00EOUk-I1; Wed, 14 Jul 2021 18:06:52 +0000 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1m3jHV-00EOUO-30 for linux-arm-kernel@lists.infradead.org; Wed, 14 Jul 2021 18:06:50 +0000 Received: by mail-pg1-x52e.google.com with SMTP id 37so3358680pgq.0 for ; Wed, 14 Jul 2021 11:06:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=MOPYaXN2PXAgqYJt3fT0Cg01EsxjrNNo+gmXFyUyh1A=; b=ErQX33M4mgzIbbU2G9P3GWMDZmgB0x/+z+NZdEDVkGWQQUtCE5GhI0jPziQ/ZKTIZ9 ECOc5L71KG9kW93iGUGYFo0LVyN20wgatNLQR+Twi2BghT1tito9WBM6HoWeQc850MIS z4zPKK71N8koen6g6cMinG/KYDVWrZZ1sDbGwJS5btoogAylW3PaI8DxPRiTrjpoEruC DLMU9umCKiXhnCB1EeCtKSqFsdUN5k1I5QSLWKtSHlHgF0ZETWfwagGTUNrmcnLM0YtB zabMbuPk5HBpQ78eI/cotH/9BLWNSHbo3VCaA87rPoPCWbmz8CFgGzBuKgawcsfPzSM/ pVYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=MOPYaXN2PXAgqYJt3fT0Cg01EsxjrNNo+gmXFyUyh1A=; b=YyeZce4fzz4zrRWxKYqNFwvFEW/HZZ4DcutmStV4M+Pqo+hfoa8WpV2ySGfJe00ov0 ZIurFZV8WUqeCioP7Dam3AC1d+6Fml+rHMhmaLiebcsE7GL8nwQfHgaq+T74cqjKrLUH 6fWJuty3xkEwMdqsE1WrlWgwprs+M2UXvTIYz9OXWLhrZdid2vlkR4w+sKatISPnX8S1 oIqgL58BrJXiDwon+TsxdbJ5bqeaZ5+seNEZvlZ0ZxlaH+h8yli3U0rcCigeiMsaSid5 MRHO8JS5TSeZ9RahR0wkMQ1q3+19GEamF9BospolkGYeE9nBDCRy6Aqa2bkuNZrAvlmL WOcA== X-Gm-Message-State: AOAM533yIRHO+5Q3riUc7zv/7ZRyige1gYCauyFez2HsaInUWtkZGlP+ 9+leZeVygmXZ3zkptnNkuoo= X-Google-Smtp-Source: ABdhPJxv6FdIMsKNpsYTnQC7e0ZQ3VaBUMhUkzPrbZaYjz4XNHBDk8t5LIZTMLESkOqb9ouS4b6P+Q== X-Received: by 2002:a63:f701:: with SMTP id x1mr10798172pgh.170.1626286005788; Wed, 14 Jul 2021 11:06:45 -0700 (PDT) Received: from localhost.localdomain ([202.112.238.121]) by smtp.gmail.com with ESMTPSA id g6sm3634143pfi.108.2021.07.14.11.06.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jul 2021 11:06:45 -0700 (PDT) From: Yuan Li To: catalin.marinas@arm.com, will@kernel.org, linux-arm-kernel@lists.infradead.org Cc: Yuan Li , twd2.me@gmail.com Subject: [PATCH] ARM64: Provide the ARM64_TBI option Date: Wed, 14 Jul 2021 18:06:40 +0000 Message-Id: <20210714180640.22229-1-lydorazoe@gmail.com> X-Mailer: git-send-email 2.17.1 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210714_110649_188930_B6ED5620 X-CRM114-Status: GOOD ( 17.42 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The ARM64 provides the Top Byte Ignore (TBI) early on, so the kernel turns TBI on by default, but, it does not provide any option to turn the feature off. In ARMv8.3, the Pointer Authentication (PA) was introduced, and if TBI is turned off, the PA will be able to use the top byte, resulting longer pointer authentication codes, which is more secure. This patch changes the default support for the TBI to an option that can be turned off. Signed-off-by: Yuan Li --- arch/arm64/Kconfig | 6 ++++++ arch/arm64/include/asm/memory.h | 6 +++++- arch/arm64/include/asm/pgtable-hwdef.h | 5 +++++ lib/Kconfig.kasan | 2 ++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index b5b13a932561..22be64358df2 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -357,6 +357,10 @@ source "arch/arm64/Kconfig.platforms" menu "Kernel Features" +config ARM64_TBI + bool "Enable support for Top Byte Ignore (TBI)" + default y + menu "ARM errata workarounds via the alternatives framework" config ARM64_WORKAROUND_CLEAN_CACHE @@ -1212,6 +1216,7 @@ config ARM64_SW_TTBR0_PAN config ARM64_TAGGED_ADDR_ABI bool "Enable the tagged user addresses syscall ABI" default y + depends on ARM64_TBI help When this option is enabled, user applications can opt in to a relaxed ABI via prctl() allowing tagged addresses to be passed @@ -1649,6 +1654,7 @@ config ARM64_AS_HAS_MTE config ARM64_MTE bool "Memory Tagging Extension support" default y + depends on ARM64_TBI depends on ARM64_AS_HAS_MTE && ARM64_TAGGED_ADDR_ABI depends on AS_HAS_ARMV8_5 depends on AS_HAS_LSE_ATOMICS diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h index 824a3655dd93..74323aa69811 100644 --- a/arch/arm64/include/asm/memory.h +++ b/arch/arm64/include/asm/memory.h @@ -215,8 +215,12 @@ static inline unsigned long kaslr_offset(void) * up with a tagged userland pointer. Clear the tag to get a sane pointer to * pass on to access_ok(), for instance. */ -#define __untagged_addr(addr) \ +#ifdef CONFIG_ARM64_TBI +#define __untagged_addr(addr) \ ((__force __typeof__(addr))sign_extend64((__force u64)(addr), 55)) +#else /* CONFIG_ARM64_TBI */ +#define __untagged_addr(addr) (addr) +#endif /* CONFIG_ARM64_TBI */ #define untagged_addr(addr) ({ \ u64 __addr = (__force u64)(addr); \ diff --git a/arch/arm64/include/asm/pgtable-hwdef.h b/arch/arm64/include/asm/pgtable-hwdef.h index 40085e53f573..827904470515 100644 --- a/arch/arm64/include/asm/pgtable-hwdef.h +++ b/arch/arm64/include/asm/pgtable-hwdef.h @@ -264,8 +264,13 @@ #define TCR_IPS_MASK (UL(7) << TCR_IPS_SHIFT) #define TCR_A1 (UL(1) << 22) #define TCR_ASID16 (UL(1) << 36) +#ifdef CONFIG_ARM64_TBI #define TCR_TBI0 (UL(1) << 37) #define TCR_TBI1 (UL(1) << 38) +#else /* CONFIG_ARM64_TBI */ +#define TCR_TBI0 (UL(0) << 37) +#define TCR_TBI1 (UL(0) << 38) +#endif /* CONFIG_ARM64_TBI */ #define TCR_HA (UL(1) << 39) #define TCR_HD (UL(1) << 40) #define TCR_TBID1 (UL(1) << 52) diff --git a/lib/Kconfig.kasan b/lib/Kconfig.kasan index 1e2d10f86011..df30ed3dac4d 100644 --- a/lib/Kconfig.kasan +++ b/lib/Kconfig.kasan @@ -85,6 +85,7 @@ config KASAN_GENERIC config KASAN_SW_TAGS bool "Software tag-based mode" + depends on ARM64_TBI depends on HAVE_ARCH_KASAN_SW_TAGS && CC_HAS_KASAN_SW_TAGS select SLUB_DEBUG if SLUB select CONSTRUCTORS @@ -108,6 +109,7 @@ config KASAN_SW_TAGS config KASAN_HW_TAGS bool "Hardware tag-based mode" + depends on ARM64_TBI depends on HAVE_ARCH_KASAN_HW_TAGS depends on SLUB help -- 2.17.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel