mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-28 05:34:13 -05:00
x86: vdso: move the sysctl to arch/x86/entry/vdso/vdso32-setup.c
When CONFIG_X86_32 is defined and CONFIG_UML is not defined, vdso_enabled belongs to arch/x86/entry/vdso/vdso32-setup.c. So, move it into its own file. Before this patch, vdso_enabled was allowed to be set to a value exceeding 1 on x86_32 architecture. After this patch is applied, vdso_enabled is not permitted to set the value more than 1. It does not matter, because according to the function load_vdso32(), only vdso_enabled is set to 1, VDSO would be enabled. Other values all mean "disabled". The same limitation could be seen in the function vdso32_setup(). Signed-off-by: Kaixiong Yu <yukaixiong@huawei.com> Reviewed-by: Kees Cook <kees@kernel.org> Signed-off-by: Joel Granados <joel.granados@kernel.org>
This commit is contained in:
committed by
Joel Granados
parent
52e66823e0
commit
a33e288147
@@ -51,15 +51,17 @@ __setup("vdso32=", vdso32_setup);
|
||||
__setup_param("vdso=", vdso_setup, vdso32_setup, 0);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_X86_64
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
/* Register vsyscall32 into the ABI table */
|
||||
#include <linux/sysctl.h>
|
||||
|
||||
static const struct ctl_table abi_table2[] = {
|
||||
static const struct ctl_table vdso_table[] = {
|
||||
{
|
||||
#ifdef CONFIG_X86_64
|
||||
.procname = "vsyscall32",
|
||||
#else
|
||||
.procname = "vdso_enabled",
|
||||
#endif
|
||||
.data = &vdso32_enabled,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
@@ -71,10 +73,14 @@ static const struct ctl_table abi_table2[] = {
|
||||
|
||||
static __init int ia32_binfmt_init(void)
|
||||
{
|
||||
register_sysctl("abi", abi_table2);
|
||||
#ifdef CONFIG_X86_64
|
||||
/* Register vsyscall32 into the ABI table */
|
||||
register_sysctl("abi", vdso_table);
|
||||
#else
|
||||
register_sysctl_init("vm", vdso_table);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
__initcall(ia32_binfmt_init);
|
||||
#endif /* CONFIG_SYSCTL */
|
||||
|
||||
#endif /* CONFIG_X86_64 */
|
||||
|
||||
@@ -2013,17 +2013,11 @@ static const struct ctl_table kern_table[] = {
|
||||
};
|
||||
|
||||
static const struct ctl_table vm_table[] = {
|
||||
#if (defined(CONFIG_X86_32) && !defined(CONFIG_UML))|| \
|
||||
(defined(CONFIG_SUPERH) && defined(CONFIG_VSYSCALL))
|
||||
#if defined(CONFIG_SUPERH) && defined(CONFIG_VSYSCALL)
|
||||
{
|
||||
.procname = "vdso_enabled",
|
||||
#ifdef CONFIG_X86_32
|
||||
.data = &vdso32_enabled,
|
||||
.maxlen = sizeof(vdso32_enabled),
|
||||
#else
|
||||
.data = &vdso_enabled,
|
||||
.maxlen = sizeof(vdso_enabled),
|
||||
#endif
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec,
|
||||
.extra1 = SYSCTL_ZERO,
|
||||
|
||||
Reference in New Issue
Block a user