From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753374AbdDJNOG (ORCPT ); Mon, 10 Apr 2017 09:14:06 -0400 Received: from Galois.linutronix.de ([146.0.238.70]:50931 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752894AbdDJNOF (ORCPT ); Mon, 10 Apr 2017 09:14:05 -0400 Date: Mon, 10 Apr 2017 15:13:59 +0200 (CEST) From: Thomas Gleixner To: Mathias Krause cc: x86@kernel.org, linux-kernel@vger.kernel.org, Andy Lutomirski , Ingo Molnar , "H. Peter Anvin" , Roland McGrath Subject: Re: [PATCH] x86/vdso: ensure vdso32_enabled gets set to valid values only In-Reply-To: <1491424561-7187-1-git-send-email-minipli@googlemail.com> Message-ID: References: <1491424561-7187-1-git-send-email-minipli@googlemail.com> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 5 Apr 2017, Mathias Krause wrote: > @@ -62,13 +64,18 @@ int __init sysenter_setup(void) > /* Register vsyscall32 into the ABI table */ > #include > > +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