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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 49898C4345F for ; Tue, 23 Apr 2024 07:20:32 +0000 (UTC) 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:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=T1tyNq2mzroh43etX6OiASayevMiNAu+1irps1ZiIos=; b=Vgjz8178K/+ZUX XrR3SYyHtA967bopN1EWhMfw081HuWUbz4hc+ipzOXu++RZKcAOi2dCXUTuwvHztMhW2bdKlX6127 Ct1k3AbT1PJOZPrgMrZkM6rclobfgIO8KozH0+l2Pvuu6XS61jEew0M6/rYEp53LoIqbg2NvlD9sd OeOKO4wSl/xBMPdGcKU91Qzq6rF0+UmM/0laf/5CuMldCPH+7sG1vZ6nh4Kj7bLqsOjmk+XGylPSr NI5e938gUWrqGEHmHIW+VnkDmBOQyMXAJT6Y2ktMAcJblfWYBtMTo6qrdYN7B6jNHSvHnUnhBCop9 zvnGItAA5UjxMf8CpFkw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rzARq-0000000GFCN-3smc; Tue, 23 Apr 2024 07:20:14 +0000 Received: from mail-lf1-x131.google.com ([2a00:1450:4864:20::131]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rzARd-0000000GF7S-1PiS for linux-arm-kernel@lists.infradead.org; Tue, 23 Apr 2024 07:20:06 +0000 Received: by mail-lf1-x131.google.com with SMTP id 2adb3069b0e04-518b9527c60so6101966e87.0 for ; Tue, 23 Apr 2024 00:19:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1713856798; x=1714461598; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=EXlA0vz+18Lb+7497sCyCPbM3iFgEXBR17af5fAEoCY=; b=uiMmjX7pWiOAlSCBZN+lUewkS8JKnYD5UEFW9bT+EizPqpAriVR3pRwuYKkLD7RlP4 umeadoDDriW22d7PAPHa8EAU4BVNZhr+CEFG1UJLdl8KWvjztQG3SZqH3tNlySFlT0id xIkmYCspmlWlnmgKQ/zzSo2J+BRzzcD+j0tMWoeEiOin6LSk3pBN2OpsWJMlMZcK3LqG auuobbD2I0UnhKBoUR51k8UuO0BfYc4OWZoXKthrx70iQMXMMMxKm1vOJIqaHNzB+U+D Qk2DY8QJaRP8E0ndRUX8+ZbScseDhtJdVkphSHvBNT0NsC/jLH2vXGy2K303Q480mfny r+bQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713856798; x=1714461598; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EXlA0vz+18Lb+7497sCyCPbM3iFgEXBR17af5fAEoCY=; b=pUht2C0z4c2MpG+KgR+CClPj/BqXuFgBDeclU3SPv/wTmDwZ2LEJcxiGD6eseZn/K8 A+SokN2S313+5gPYWd2C6QAI5ZYrWkxLZIfzkV0U4p1k14HAd1ziKUpOQVf5wdrVkPMD 64C7X3+N/90u1DOcc5Wi1qmsH2alUNpGwLXe1bduJjFVQpE4aSI3kfsDRaCRpz5rLiab iz6OAVEPi/7bRFgXDbmkVi3TJWX0uPb6umwigUTOMmniq9ffI0GNoLZyfRwPLB2N4NTI Ig0/cbB8mwuSE3YFfKSuTmwT0TULklZH5Rkh4VKjw5B15LMfeHbETjSsJIpssbyM5iry HmsA== X-Gm-Message-State: AOJu0YzENa+RyUQwWsHq4tW5uI4mT5NoVtzmyjwWNkdLKvbql+F5z7IE ISvTldQdG33Ur4ENQL5bcIJvXvPUxmwWVCrwwI95pRw2MP7vgW4nRzcuu38L50c= X-Google-Smtp-Source: AGHT+IGGnYoJRlkr2ZtVgyk7NVrxj8BGE+VKtvdR0iTD43TKecu30uegGmrvxHqb6hNuBc15obtsTw== X-Received: by 2002:a19:7505:0:b0:51a:f689:b4df with SMTP id y5-20020a197505000000b0051af689b4dfmr5704254lfe.44.1713856798484; Tue, 23 Apr 2024 00:19:58 -0700 (PDT) Received: from [192.168.1.140] ([85.235.12.238]) by smtp.gmail.com with ESMTPSA id f13-20020a056512360d00b0051ad4552454sm1307588lfs.148.2024.04.23.00.19.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Apr 2024 00:19:58 -0700 (PDT) From: Linus Walleij Date: Tue, 23 Apr 2024 09:19:53 +0200 Subject: [PATCH v8 7/9] ARM: lib: Annotate loop delay instructions for CFI MIME-Version: 1.0 Message-Id: <20240423-arm32-cfi-v8-7-08f10f5d9297@linaro.org> References: <20240423-arm32-cfi-v8-0-08f10f5d9297@linaro.org> In-Reply-To: <20240423-arm32-cfi-v8-0-08f10f5d9297@linaro.org> To: Russell King , Sami Tolvanen , Kees Cook , Nathan Chancellor , Nick Desaulniers , Ard Biesheuvel , Arnd Bergmann Cc: linux-arm-kernel@lists.infradead.org, llvm@lists.linux.dev, Linus Walleij X-Mailer: b4 0.13.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240423_002001_625387_97F554F3 X-CRM114-Status: GOOD ( 14.46 ) 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: , 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 When we annotate the loop delay code with SYM_TYPED_FUNC_START() a function prototype signature will be emitted into the object file above each site called from C, and the delay loop code is using "fallthroughs" from the different assembly callbacks. This will not work as the execution flow will run into the prototype signatures. Rewrite the code to use explicit branches to the other code segments and annotate the code using SYM_TYPED_FUNC_START(). Tested on the ARM Versatile which uses the calibrated loop delay. Tested-by: Kees Cook Reviewed-by: Sami Tolvanen Signed-off-by: Linus Walleij --- arch/arm/lib/delay-loop.S | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/arch/arm/lib/delay-loop.S b/arch/arm/lib/delay-loop.S index 3ac05177d097..33b08ca1c242 100644 --- a/arch/arm/lib/delay-loop.S +++ b/arch/arm/lib/delay-loop.S @@ -5,6 +5,7 @@ * Copyright (C) 1995, 1996 Russell King */ #include +#include #include #include @@ -24,21 +25,26 @@ * HZ <= 1000 */ -ENTRY(__loop_udelay) +SYM_TYPED_FUNC_START(__loop_udelay) ldr r2, .LC1 mul r0, r2, r0 @ r0 = delay_us * UDELAY_MULT -ENTRY(__loop_const_udelay) @ 0 <= r0 <= 0xfffffaf0 + b __loop_const_udelay +SYM_FUNC_END(__loop_udelay) + +SYM_TYPED_FUNC_START(__loop_const_udelay) @ 0 <= r0 <= 0xfffffaf0 ldr r2, .LC0 ldr r2, [r2] umull r1, r0, r2, r0 @ r0-r1 = r0 * loops_per_jiffy adds r1, r1, #0xffffffff @ rounding up ... adcs r0, r0, r0 @ and right shift by 31 reteq lr + b __loop_delay +SYM_FUNC_END(__loop_const_udelay) .align 3 @ Delay routine -ENTRY(__loop_delay) +SYM_TYPED_FUNC_START(__loop_delay) subs r0, r0, #1 #if 0 retls lr @@ -58,6 +64,4 @@ ENTRY(__loop_delay) #endif bhi __loop_delay ret lr -ENDPROC(__loop_udelay) -ENDPROC(__loop_const_udelay) -ENDPROC(__loop_delay) +SYM_FUNC_END(__loop_delay) -- 2.44.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel