Re: [PATCH v4 -next 14/15] sh: vdso: move the sysctl to arch/sh/kernel/vsyscall/vsyscall.c

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

On 2025/1/3 19:11, Geert Uytterhoeven wrote:
> Hi Kaixiong,
>
> On Sat, Dec 28, 2024 at 4:07 PM Kaixiong Yu <[email protected]> wrote:
>> When CONFIG_SUPERH and CONFIG_VSYSCALL are defined,
>> vdso_enabled belongs to arch/sh/kernel/vsyscall/vsyscall.c.
>> So, move it into its own file. After this patch is applied,
>> all sysctls of vm_table would be moved. So, delete vm_table.
>>
>> Signed-off-by: Kaixiong Yu <[email protected]>
>> Reviewed-by: Kees Cook <[email protected]>
>> ---
>> v4:
>>   - const qualify struct ctl_table vdso_table
> Thanks for your patch!
>
> I gave this a try on landisk, and /proc/sys/vm/vdso_enabled
> disappeared.
>
>> --- a/arch/sh/kernel/vsyscall/vsyscall.c
>> +++ b/arch/sh/kernel/vsyscall/vsyscall.c
>> @@ -55,6 +67,8 @@ int __init vsyscall_init(void)
>>                 &vsyscall_trapa_start,
>>                 &vsyscall_trapa_end - &vsyscall_trapa_start);
>>
>> +       register_sysctl_init("vm", vdso_table);
>      "failed when register_sysctl_sz vdso_table to vm"
>
> Adding some debug prints shows that kzalloc() in
> __register_sysctl_table() fails, presumably because it is called too
> early in the boot process.
>
>> +
>>          return 0;
>>   }
> Moving the call to register_sysctl_init() into its own fs_initcall(),
> like the gmail-whitespace-damaged patch below, fixes that.
>
> --- a/arch/sh/kernel/vsyscall/vsyscall.c
> +++ b/arch/sh/kernel/vsyscall/vsyscall.c
> @@ -67,11 +67,17 @@ int __init vsyscall_init(void)
>                 &vsyscall_trapa_start,
>                 &vsyscall_trapa_end - &vsyscall_trapa_start);
>
> -       register_sysctl_init("vm", vdso_table);
> +       return 0;
> +}
>
> +static int __init vm_sysctl_init(void)
> +{
> +       register_sysctl_init("vm", vdso_table);
>          return 0;
>   }
>
> +fs_initcall(vm_sysctl_init);
> +
>   /* Setup a VMA at program startup for the vsyscall page */
>   int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
>   {
>
> Gr{oetje,eeting}s,
>
>                          Geert

Thank you so much for your test and fix patch !

I will fix it in patches series v5.

Best ...
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.