Re: [PATCH] ARM: OMAP2+: Make OMAP4 finish_suspend callback CFI-safe

Nathan Chancellor <[email protected]>
Newsgroups org.kernel.vger.linux-omap,dev.linux.lists.llvm,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel
Message-ID <20260512073442.GA570003@ax162>
On Tue, May 12, 2026 at 12:23:41AM -0400, Mithil Bavishi wrote:
> With CONFIG_CFI enabled, OMAP4 can trap in omap4_enter_lowpower()
> because omap_pm_ops.finish_suspend points directly to the assembly
> routine omap4_finish_suspend, which lacks the expected KCFI type
> metadata.

It sounds like omap4_finish_suspend() should be defined with
SYM_TYPED_FUNC_START then? Is that the case for all of the other
functions that are added to omap_pm_ops?

> Add a small C wrapper with the exact callback prototype and use it for
> finish_suspend.
> 
> Signed-off-by: Mithil Bavishi <[email protected]>
> ---
>  arch/arm/mach-omap2/omap-mpuss-lowpower.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/mach-omap2/omap-mpuss-lowpower.c b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
> index f18ef45e2..1c51b2f97 100644
> --- a/arch/arm/mach-omap2/omap-mpuss-lowpower.c
> +++ b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
> @@ -111,6 +111,11 @@ static struct cpu_pm_ops omap_pm_ops = {
>  	.hotplug_restart	= dummy_cpu_resume,
>  };
>  
> +static int omap4_finish_suspend_wrapper(unsigned long cpu_state)
> +{
> +	return omap4_finish_suspend(cpu_state);
> +}
> +
>  /*
>   * Program the wakeup routine address for the CPU0 and CPU1
>   * used for OFF or DORMANT wakeup.
> @@ -437,7 +442,7 @@ int __init omap4_mpuss_init(void)
>  	}
>  
>  	if (cpu_is_omap44xx()) {
> -		omap_pm_ops.finish_suspend = omap4_finish_suspend;
> +		omap_pm_ops.finish_suspend = omap4_finish_suspend_wrapper;
>  		omap_pm_ops.resume = omap4_cpu_resume;
>  		omap_pm_ops.scu_prepare = scu_pwrst_prepare;
>  		omap_pm_ops.hotplug_restart = omap4_secondary_startup;
> -- 
> 2.43.0
> 

-- 
Cheers,
Nathan
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.