Re: [PATCH v4] ARM: imx: Fix suspend/resume crash with Clang CFI

From: Sami Tolvanen

Date: Fri Aug 28 2026 - 16:51:04 EST


On Fri, Aug 28, 2026 at 1:19 PM Nick Desaulniers
<ndesaulniers@xxxxxxxxxx> wrote:
>
> The 8B alignment seems to be a requirement of fncopy() for 32b ARM.
> But functions in ARM can have 4B or even 2B alignment w/ Thumb, I
> think.
>
> Doing such an override would add unnecessary padding for each use of
> SYM_TYPED_FUNC_START where probably none of them have this fncopy()
> constraint.
>
> ```
> #ifdef CONFIG_CFI
>
> #define SYM_TYPED_START_ALIGNED(name, linkage, align) \
> linkage(name) ASM_NL \
> .balign align ASM_NL \
> .fill (align) - 4, 1, 0 ASM_NL \
> __CFI_TYPE(name) ASM_NL \
> name:
>
> #else /* CONFIG_CFI */
>
> #define SYM_TYPED_START_ALIGNED(name, linkage, align) \
> SYM_START(name, linkage, .balign align)
>
> #endif /* CONFIG_CFI */
> #define SYM_TYPED_FUNC_START_ALIGNED(name, align) \
> SYM_TYPED_START_ALIGNED(name, SYM_L_GLOBAL, align)
> ```
> then this driver could do
> ```
> // fncopy needs 8B alignment; see arch/arm/include/asm/fncpy.h.
> SYM_TYPED_FUNC_START_ALIGNED(imx6_suspend, 8)

Looks reasonable, but this still feels ARM-specific to me. How about
adding the macro to arch/arm/include/asm/linkage.h unless you have
other users in mind?

Sami