lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <9f37aa63-d69b-4220-8ef1-3f710cdfe6d4@linux.ibm.com>
Date: Fri, 31 Oct 2025 10:27:19 +0530
From: Venkat Rao Bagalkote <venkat88@...ux.ibm.com>
To: Josh Poimboeuf <jpoimboe@...nel.org>, x86@...nel.org
Cc: linux-kernel@...r.kernel.org, Peter Zijlstra <peterz@...radead.org>,
        Hari Bathini <hbathini@...ux.ibm.com>
Subject: Re: [PATCH] vmlinux.lds: Exclude .text.startup and .text.exit from
 TEXT_MAIN


On 31/10/25 6:31 am, Josh Poimboeuf wrote:
> An ftrace warning was reported in ftrace_init_ool_stub():
>
>     WARNING: arch/powerpc/kernel/trace/ftrace.c:234 at ftrace_init_ool_stub+0x188/0x3f4, CPU#0: swapper/0
>
> The problem is that the linker script is placing .text.startup in .text
> rather than in .init.text, due to an inadvertent match of the TEXT_MAIN
> '.text.[0-9a-zA-Z_]*' pattern.
>
> This bug existed for some configurations before, but is only now coming
> to light due to the TEXT_MAIN macro unification in commit 1ba9f8979426
> ("vmlinux.lds: Unify TEXT_MAIN, DATA_MAIN, and related macros").
>
> The .text.startup section consists of constructors which are used by
> KASAN, KCSAN, and GCOV.  The constructors are only called during boot,
> so .text.startup is supposed to match the INIT_TEXT pattern so it can be
> placed in .init.text and freed after init.  But since INIT_TEXT comes
> *after* TEXT_MAIN in the linker script, TEXT_MAIN needs to manually
> exclude .text.startup.
>
> Update TEXT_MAIN to exclude .text.startup (and its .text.startup.*
> variant from -ffunction-sections), along with .text.exit and
> .text.exit.* which should match EXIT_TEXT.
>
> Specifically, use a series of more specific glob patterns to match
> generic .text.* sections (for -ffunction-sections) while explicitly
> excluding .text.startup[.*] and .text.exit[.*].
>
> Also update INIT_TEXT and EXIT_TEXT to explicitly match their
> -ffunction-sections variants (.text.startup.* and .text.exit.*).
>
> Fixes: 1ba9f8979426 ("vmlinux.lds: Unify TEXT_MAIN, DATA_MAIN, and related macros")
> Closes: https://lore.kernel.org/72469502-ca37-4287-90b9-a751cecc498c@linux.ibm.com
> Reported-by: Venkat Rao Bagalkote <venkat88@...ux.ibm.com>
> Debugged-by: Hari Bathini <hbathini@...ux.ibm.com>
> Signed-off-by: Josh Poimboeuf <jpoimboe@...nel.org>
> ---


Thanks for the patch. Tested this patch by applying on top of 
next-20251030, and it fixes the reported issue.


Please add below tag.


Tested-by: Venkat Rao Bagalkote <venkat88@...ux.ibm.com>



Regards,

Venkat.


> For tip/objtool/core.
>
>   include/asm-generic/vmlinux.lds.h | 28 ++++++++++++++++++++++------
>   1 file changed, 22 insertions(+), 6 deletions(-)
>
> diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
> index 5facbc994634..9de1d900fa15 100644
> --- a/include/asm-generic/vmlinux.lds.h
> +++ b/include/asm-generic/vmlinux.lds.h
> @@ -88,13 +88,29 @@
>   
>   /*
>    * Support -ffunction-sections by matching .text and .text.*,
> - * but exclude '.text..*'.
> + * but exclude '.text..*', .text.startup[.*], and .text.exit[.*].
>    *
> - * Special .text.* sections that are typically grouped separately, such as
> + * .text.startup and .text.startup.* are matched later by INIT_TEXT.
> + * .text.exit and .text.exit.* are matched later by EXIT_TEXT.
> + *
> + * Other .text.* sections that are typically grouped separately, such as
>    * .text.unlikely or .text.hot, must be matched explicitly before using
>    * TEXT_MAIN.
>    */
> -#define TEXT_MAIN .text .text.[0-9a-zA-Z_]*
> +#define TEXT_MAIN							\
> +	.text								\
> +	.text.[_0-9A-Za-df-rt-z]*					\
> +	.text.s[_0-9A-Za-su-z]*						\
> +	.text.st[_0-9A-Zb-z]*						\
> +	.text.sta[_0-9A-Za-qs-z]*					\
> +	.text.star[_0-9A-Za-su-z]*					\
> +	.text.start[_0-9A-Za-tv-z]*					\
> +	.text.startu[_0-9A-Za-oq-z]*					\
> +	.text.startup[_0-9A-Za-z]*					\
> +	.text.e[_0-9A-Za-wy-z]*						\
> +	.text.ex[_0-9A-Za-hj-z]*					\
> +	.text.exi[_0-9A-Za-su-z]*					\
> +	.text.exit[_0-9A-Za-z]*
>   
>   /*
>    * Support -fdata-sections by matching .data, .data.*, and others,
> @@ -713,16 +729,16 @@
>   
>   #define INIT_TEXT							\
>   	*(.init.text .init.text.*)					\
> -	*(.text.startup)
> +	*(.text.startup .text.startup.*)
>   
>   #define EXIT_DATA							\
>   	*(.exit.data .exit.data.*)					\
>   	*(.fini_array .fini_array.*)					\
> -	*(.dtors .dtors.*)						\
> +	*(.dtors .dtors.*)
>   
>   #define EXIT_TEXT							\
>   	*(.exit.text)							\
> -	*(.text.exit)							\
> +	*(.text.exit .text.exit.*)
>   
>   #define EXIT_CALL							\
>   	*(.exitcall.exit)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ