Skip to content

Commit

Permalink
sh: vdso: move the sysctl to arch/sh/kernel/vsyscall/vsyscall.c
Browse files Browse the repository at this point in the history
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. To avoid failure when registering
the vdso_table, move the call to register_sysctl_init() into
its own fs_initcall().

Signed-off-by: Kaixiong Yu <yukaixiong@huawei.com>
Reviewed-by: Kees Cook <kees@kernel.org>
Signed-off-by: Joel Granados <joel.granados@kernel.org>
  • Loading branch information
Kaixiong Yu authored and Joel Granados committed Feb 7, 2025
1 parent a33e288 commit f569ca4
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 12 deletions.
20 changes: 20 additions & 0 deletions arch/sh/kernel/vsyscall/vsyscall.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include <linux/module.h>
#include <linux/elf.h>
#include <linux/sched.h>
#include <linux/sysctl.h>
#include <linux/err.h>

/*
Expand All @@ -30,6 +31,17 @@ static int __init vdso_setup(char *s)
}
__setup("vdso=", vdso_setup);

static const struct ctl_table vdso_table[] = {
{
.procname = "vdso_enabled",
.data = &vdso_enabled,
.maxlen = sizeof(vdso_enabled),
.mode = 0644,
.proc_handler = proc_dointvec,
.extra1 = SYSCTL_ZERO,
},
};

/*
* These symbols are defined by vsyscall.o to mark the bounds
* of the ELF DSO images included therein.
Expand Down Expand Up @@ -58,6 +70,14 @@ int __init vsyscall_init(void)
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)
{
Expand Down
13 changes: 1 addition & 12 deletions kernel/sysctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -2012,18 +2012,7 @@ static const struct ctl_table kern_table[] = {
#endif
};

static const struct ctl_table vm_table[] = {
#if defined(CONFIG_SUPERH) && defined(CONFIG_VSYSCALL)
{
.procname = "vdso_enabled",
.data = &vdso_enabled,
.maxlen = sizeof(vdso_enabled),
.mode = 0644,
.proc_handler = proc_dointvec,
.extra1 = SYSCTL_ZERO,
},
#endif
};
static const struct ctl_table vm_table[] = {};

int __init sysctl_init_bases(void)
{
Expand Down

0 comments on commit f569ca4

Please sign in to comment.