Re: [PATCH v4 -next 06/15] mm: mmap: move sysctl to mm/mmap.c

yukaixiong <[email protected]>
Newsgroups gmane.linux.kernel.lsm,gmane.linux.ports.sh.devel,gmane.linux.kernel,gmane.linux.file-systems,gmane.linux.kernel.mm,gmane.linux.nfs,gmane.linux.network
Message-ID <[email protected]>

On 2025/1/2 22:08, Lorenzo Stoakes wrote:
> On Mon, Dec 23, 2024 at 10:15:25PM +0800, Kaixiong Yu wrote:
>> This moves all mmap related sysctls to mm/mmap.c, as part of the
>> kernel/sysctl.c cleaning, also move the variable declaration from
>> kernel/sysctl.c into mm/mmap.c.
>>
>> Signed-off-by: Kaixiong Yu <[email protected]>
>> Reviewed-by: Kees Cook <[email protected]>
> Looks good to me, thanks!
>
> Reviewed-by: Lorenzo Stoakes <[email protected]>

Thanks for your review!

Best ...
>> ---
>> v4:
>>   - const qualify struct ctl_table mmap_table
>> v3:
>>   - change the title
>> v2:
>>   - fix sysctl_max_map_count undeclared issue in mm/nommu.c
>> ---
>> ---
>>   kernel/sysctl.c | 50 +--------------------------------------------
>>   mm/mmap.c       | 54 +++++++++++++++++++++++++++++++++++++++++++++++++
>>   2 files changed, 55 insertions(+), 49 deletions(-)
>>
>> diff --git a/kernel/sysctl.c b/kernel/sysctl.c
>> index aea3482106e0..9c245898f535 100644
>> --- a/kernel/sysctl.c
>> +++ b/kernel/sysctl.c
>> @@ -127,12 +127,6 @@ enum sysctl_writes_mode {
>>
>>   static enum sysctl_writes_mode sysctl_writes_strict = SYSCTL_WRITES_STRICT;
>>   #endif /* CONFIG_PROC_SYSCTL */
>> -
>> -#if defined(HAVE_ARCH_PICK_MMAP_LAYOUT) || \
>> -    defined(CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT)
>> -int sysctl_legacy_va_layout;
>> -#endif
>> -
>>   #endif /* CONFIG_SYSCTL */
>>
>>   /*
>> @@ -2037,16 +2031,7 @@ static struct ctl_table vm_table[] = {
>>   		.extra1		= SYSCTL_ONE,
>>   		.extra2		= SYSCTL_FOUR,
>>   	},
>> -#ifdef CONFIG_MMU
>> -	{
>> -		.procname	= "max_map_count",
>> -		.data		= &sysctl_max_map_count,
>> -		.maxlen		= sizeof(sysctl_max_map_count),
>> -		.mode		= 0644,
>> -		.proc_handler	= proc_dointvec_minmax,
>> -		.extra1		= SYSCTL_ZERO,
>> -	},
>> -#else
>> +#ifndef CONFIG_MMU
>>   	{
>>   		.procname	= "nr_trim_pages",
>>   		.data		= &sysctl_nr_trim_pages,
>> @@ -2064,17 +2049,6 @@ static struct ctl_table vm_table[] = {
>>   		.proc_handler	= proc_dointvec_minmax,
>>   		.extra1		= SYSCTL_ZERO,
>>   	},
> Nitty, but  this bit belongs in mm/nommu.c?
>
>> -#if defined(HAVE_ARCH_PICK_MMAP_LAYOUT) || \
>> -    defined(CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT)
>> -	{
>> -		.procname	= "legacy_va_layout",
>> -		.data		= &sysctl_legacy_va_layout,
>> -		.maxlen		= sizeof(sysctl_legacy_va_layout),
>> -		.mode		= 0644,
>> -		.proc_handler	= proc_dointvec_minmax,
>> -		.extra1		= SYSCTL_ZERO,
>> -	},
>> -#endif
>>   #ifdef CONFIG_MMU
>>   	{
>>   		.procname	= "mmap_min_addr",
>> @@ -2100,28 +2074,6 @@ static struct ctl_table vm_table[] = {
>>   		.extra1		= SYSCTL_ZERO,
>>   	},
>>   #endif
>> -#ifdef CONFIG_HAVE_ARCH_MMAP_RND_BITS
>> -	{
>> -		.procname	= "mmap_rnd_bits",
>> -		.data		= &mmap_rnd_bits,
>> -		.maxlen		= sizeof(mmap_rnd_bits),
>> -		.mode		= 0600,
>> -		.proc_handler	= proc_dointvec_minmax,
>> -		.extra1		= (void *)&mmap_rnd_bits_min,
>> -		.extra2		= (void *)&mmap_rnd_bits_max,
>> -	},
>> -#endif
>> -#ifdef CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS
>> -	{
>> -		.procname	= "mmap_rnd_compat_bits",
>> -		.data		= &mmap_rnd_compat_bits,
>> -		.maxlen		= sizeof(mmap_rnd_compat_bits),
>> -		.mode		= 0600,
>> -		.proc_handler	= proc_dointvec_minmax,
>> -		.extra1		= (void *)&mmap_rnd_compat_bits_min,
>> -		.extra2		= (void *)&mmap_rnd_compat_bits_max,
>> -	},
>> -#endif
>>   };
>>
>>   int __init sysctl_init_bases(void)
>> diff --git a/mm/mmap.c b/mm/mmap.c
>> index aef835984b1c..cc579aafd7ba 100644
>> --- a/mm/mmap.c
>> +++ b/mm/mmap.c
>> @@ -1603,6 +1603,57 @@ struct vm_area_struct *_install_special_mapping(
>>   					&special_mapping_vmops);
>>   }
>>
>> +#ifdef CONFIG_SYSCTL
>> +#if defined(HAVE_ARCH_PICK_MMAP_LAYOUT) || \
>> +		defined(CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT)
>> +int sysctl_legacy_va_layout;
>> +#endif
>> +
>> +static const struct ctl_table mmap_table[] = {
>> +		{
>> +				.procname       = "max_map_count",
>> +				.data           = &sysctl_max_map_count,
>> +				.maxlen         = sizeof(sysctl_max_map_count),
>> +				.mode           = 0644,
>> +				.proc_handler   = proc_dointvec_minmax,
>> +				.extra1         = SYSCTL_ZERO,
>> +		},
>> +#if defined(HAVE_ARCH_PICK_MMAP_LAYOUT) || \
>> +		defined(CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT)
>> +		{
>> +				.procname       = "legacy_va_layout",
>> +				.data           = &sysctl_legacy_va_layout,
>> +				.maxlen         = sizeof(sysctl_legacy_va_layout),
>> +				.mode           = 0644,
>> +				.proc_handler   = proc_dointvec_minmax,
>> +				.extra1         = SYSCTL_ZERO,
>> +		},
>> +#endif
>> +#ifdef CONFIG_HAVE_ARCH_MMAP_RND_BITS
>> +		{
>> +				.procname       = "mmap_rnd_bits",
>> +				.data           = &mmap_rnd_bits,
>> +				.maxlen         = sizeof(mmap_rnd_bits),
>> +				.mode           = 0600,
>> +				.proc_handler   = proc_dointvec_minmax,
>> +				.extra1         = (void *)&mmap_rnd_bits_min,
>> +				.extra2         = (void *)&mmap_rnd_bits_max,
>> +		},
>> +#endif
>> +#ifdef CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS
>> +		{
>> +				.procname       = "mmap_rnd_compat_bits",
>> +				.data           = &mmap_rnd_compat_bits,
>> +				.maxlen         = sizeof(mmap_rnd_compat_bits),
>> +				.mode           = 0600,
>> +				.proc_handler   = proc_dointvec_minmax,
>> +				.extra1         = (void *)&mmap_rnd_compat_bits_min,
>> +				.extra2         = (void *)&mmap_rnd_compat_bits_max,
>> +		},
>> +#endif
>> +};
>> +#endif /* CONFIG_SYSCTL */
>> +
>>   /*
>>    * initialise the percpu counter for VM
>>    */
>> @@ -1612,6 +1663,9 @@ void __init mmap_init(void)
>>
>>   	ret = percpu_counter_init(&vm_committed_as, 0, GFP_KERNEL);
>>   	VM_BUG_ON(ret);
>> +#ifdef CONFIG_SYSCTL
>> +	register_sysctl_init("vm", mmap_table);
>> +#endif
>>   }
>>
>>   /*
>> --
>> 2.34.1
>>
> .
>
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.