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

Geert Uytterhoeven <[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 <CAMuHMdVHD+AhMpcyxndTno-ocatS1tRP5uRrKNFL6Z=j3KX8og@mail.gmail.com>
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

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
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.