diff mbox series

mm/hugetlb: move hugetlb_sysctl_init() to the __init section

Message ID 20250319060041.2737320-1-marc.herbert@linux.intel.com (mailing list archive)
State New
Headers show
Series mm/hugetlb: move hugetlb_sysctl_init() to the __init section | expand

Commit Message

Marc Herbert March 19, 2025, 6 a.m. UTC
From: Marc Herbert <Marc.Herbert@linux.intel.com>

hugetlb_sysctl_init() is only invoked once by an __init function and is
merely a wrapper around another __init function so there is not reason
to keep it.

Fixes the following warning when toning down some GCC inline options:

 WARNING: modpost: vmlinux: section mismatch in reference:
   hugetlb_sysctl_init+0x1b (section: .text) ->
     __register_sysctl_init (section: .init.text)

Signed-off-by: Marc Herbert <Marc.Herbert@linux.intel.com>
---
 mm/hugetlb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Anshuman Khandual March 19, 2025, 6:27 a.m. UTC | #1
On 3/19/25 11:30, marc.herbert@linux.intel.com wrote:
> From: Marc Herbert <Marc.Herbert@linux.intel.com>
> 
> hugetlb_sysctl_init() is only invoked once by an __init function and is
> merely a wrapper around another __init function so there is not reason
> to keep it.
> 
> Fixes the following warning when toning down some GCC inline options:
> 
>  WARNING: modpost: vmlinux: section mismatch in reference:
>    hugetlb_sysctl_init+0x1b (section: .text) ->
>      __register_sysctl_init (section: .init.text)
> 
> Signed-off-by: Marc Herbert <Marc.Herbert@linux.intel.com>
> ---
>  mm/hugetlb.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> index 65068671e460..a2850b26aed9 100644
> --- a/mm/hugetlb.c
> +++ b/mm/hugetlb.c
> @@ -4900,7 +4900,7 @@ static const struct ctl_table hugetlb_table[] = {
>  	},
>  };
>  
> -static void hugetlb_sysctl_init(void)
> +static void __init hugetlb_sysctl_init(void)
>  {
>  	register_sysctl_init("vm", hugetlb_table);
>  }

LGTM

Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
Andrew Morton March 19, 2025, 7:22 a.m. UTC | #2
On Wed, 19 Mar 2025 06:00:30 +0000 marc.herbert@linux.intel.com wrote:

> From: Marc Herbert <Marc.Herbert@linux.intel.com>
> 
> hugetlb_sysctl_init() is only invoked once by an __init function and is
> merely a wrapper around another __init function so there is not reason
> to keep it.
> 
> Fixes the following warning when toning down some GCC inline options:
> 
>  WARNING: modpost: vmlinux: section mismatch in reference:
>    hugetlb_sysctl_init+0x1b (section: .text) ->
>      __register_sysctl_init (section: .init.text)
> 

Huh.  I wonder why this just started happening.
Muchun Song March 19, 2025, 7:44 a.m. UTC | #3
> On Mar 19, 2025, at 14:00, marc.herbert@linux.intel.com wrote:
> 
> From: Marc Herbert <Marc.Herbert@linux.intel.com>
> 
> hugetlb_sysctl_init() is only invoked once by an __init function and is
> merely a wrapper around another __init function so there is not reason
> to keep it.
> 
> Fixes the following warning when toning down some GCC inline options:
> 
> WARNING: modpost: vmlinux: section mismatch in reference:
>   hugetlb_sysctl_init+0x1b (section: .text) ->
>     __register_sysctl_init (section: .init.text)
> 
> Signed-off-by: Marc Herbert <Marc.Herbert@linux.intel.com>

Reviewed-by: Muchun Song <muchun.song@linux.dev>

Thanks.
Marc Herbert March 20, 2025, 5:31 p.m. UTC | #4
Hi Andrew,

On 2025-03-19 00:22, Andrew Morton wrote:
> On Wed, 19 Mar 2025 06:00:30 +0000 marc.herbert@linux.intel.com wrote:
> 
>> hugetlb_sysctl_init() is only invoked once by an __init function and is
>> merely a wrapper around another __init function so there is not reason
>> to keep it.
>>
>> Fixes the following warning when toning down some GCC inline options:
>>
>>  WARNING: modpost: vmlinux: section mismatch in reference:
>>    hugetlb_sysctl_init+0x1b (section: .text) ->
>>      __register_sysctl_init (section: .init.text)
>>
> 
> Huh.  I wonder why this just started happening.

As I just mentioned, I see this warning only because I'm playing with
GCC flags.

Not sure how good is that page but its name is perfect here:
https://stackoverflow.com/questions/59388740/gcc-shows-different-warnings-depending-on-optimisation-level

Also, https://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html
> The effectiveness of some warnings depends on optimizations also being
> enabled. For example -Wsuggest-final-types is more effective with
> link-time optimization and some instances of other warnings may not be
> issued at all unless optimization is enabled. While optimization in
> general improves the efficacy of control and data flow sensitive
> warnings, in some cases it may also cause false positives.

That particular warning was very minor but simple and valid; not a false 
positive. It was also the only "section mismatch" warning found in my
entire configuration.

Marc

PS: who needs expensive static analysis tools when unusual combination of
compiler flags can find issues? :-D
diff mbox series

Patch

diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 65068671e460..a2850b26aed9 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -4900,7 +4900,7 @@  static const struct ctl_table hugetlb_table[] = {
 	},
 };
 
-static void hugetlb_sysctl_init(void)
+static void __init hugetlb_sysctl_init(void)
 {
 	register_sysctl_init("vm", hugetlb_table);
 }