lkml.org 
[lkml]   [2017]   [Apr]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] x86/vdso: ensure vdso32_enabled gets set to valid values only
On Wed, 5 Apr 2017, Mathias Krause wrote:
> @@ -62,13 +64,18 @@ int __init sysenter_setup(void)
> /* Register vsyscall32 into the ABI table */
> #include <linux/sysctl.h>
>
> +static const int zero;
> +static const int one = 1;
> +
> static struct ctl_table abi_table2[] = {
> {
> .procname = "vsyscall32",
> .data = &vdso32_enabled,
> .maxlen = sizeof(int),
> .mode = 0644,
> - .proc_handler = proc_dointvec
> + .proc_handler = proc_dointvec_minmax,
> + .extra1 = (int *)&zero,
> + .extra2 = (int *)&one,

This is still bustable. Let's start with: vdso32_enabled = false

arch_setup_additional_pages()
--> No mapping

sysctl.vsysscall32()
--> vdso32_enabled = true

create_elf_tables()
if (vdso32_enabled) {
--> Add VDSO entry with NULL pointer

The vdso map code needs to store a flag in current which can be checked in
ARCH_DLINFO_IA32.

Thanks,

tglx

\
 
 \ /
  Last update: 2017-04-10 15:14    [W:0.066 / U:10.900 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site