Commit f569ca4b authored by Kaixiong Yu's avatar Kaixiong Yu Committed by Joel Granados
Browse files

sh: vdso: move the sysctl to arch/sh/kernel/vsyscall/vsyscall.c



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: default avatarKaixiong Yu <yukaixiong@huawei.com>
Reviewed-by: default avatarKees Cook <kees@kernel.org>
Signed-off-by: default avatarJoel Granados <joel.granados@kernel.org>
parent a33e2881
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
#include <linux/module.h>
#include <linux/elf.h>
#include <linux/sched.h>
#include <linux/sysctl.h>
#include <linux/err.h>

/*
@@ -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.
@@ -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)
{
+1 −12
Original line number Diff line number Diff line
@@ -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)
{