All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86, vsyscall: add CONFIG to control default
@ 2015-08-13  0:55 Kees Cook
  2015-08-13  2:23 ` Josh Triplett
  2015-09-20 11:29 ` [tip:x86/asm] x86/entry/vsyscall: Add " tip-bot for Kees Cook
  0 siblings, 2 replies; 8+ messages in thread
From: Kees Cook @ 2015-08-13  0:55 UTC (permalink / raw)
  To: Andy Lutomirski
  Cc: Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, Josh Triplett,
	linux-kernel

Most modern systems can run with vsyscall=none. In an effort to provide
a way for build-time defaults to lack legacy settings, this adds a new
CONFIG to select the type of vsyscall mapping to use, similar to the
existing "vsyscall" command line parameter.

Signed-off-by: Kees Cook <keescook@chromium.org>
---
 arch/x86/Kconfig                      | 49 +++++++++++++++++++++++++++++++++++
 arch/x86/entry/vsyscall/vsyscall_64.c |  9 ++++++-
 2 files changed, 57 insertions(+), 1 deletion(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index b3a1a5d77d92..fbd0fad714a1 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -2010,6 +2010,55 @@ config COMPAT_VDSO
 	  If unsure, say N: if you are compiling your own kernel, you
 	  are unlikely to be using a buggy version of glibc.
 
+choice
+	prompt "vsyscall table for legacy applications"
+	depends on X86_64
+	default LEGACY_VSYSCALL_EMULATE
+	help
+	  Legacy user code that does not know how to find the vDSO expects
+	  to be able to issue three syscalls by calling fixed addresses in
+	  kernel space. Since this location is not randomized with ASLR,
+	  it can be used to assist security vulnerability exploitation.
+
+	  This setting can be changed at boot time via the kernel command
+	  line parameter vsyscall=[native|emulate|none].
+
+	  On a system with recent enough glibc (2.14 or newer) and no
+	  static binaries, you can say None without a performance penalty
+	  to improve security.
+
+	  If unsure, select "Emulate".
+
+	config LEGACY_VSYSCALL_NATIVE
+		bool "Native"
+		help
+		  Actual executable code is located in the fixed vsyscall
+		  address mapping, implementing time() efficiently. Since
+		  this makes the mapping executable, it can be used during
+		  security vulnerability exploitation (traditionally as
+		  ROP gadgets). This configuration is not recommended.
+
+	config LEGACY_VSYSCALL_EMULATE
+		bool "Emulate"
+		help
+		  The kernel traps and emulates calls into the fixed
+		  vsyscall address mapping. This makes the mapping
+		  non-executable, but it still contains known contents,
+		  which could be used in certain rare security vulnerability
+		  exploits. This configuration is recommended when userspace
+		  still uses the vsyscall area.
+
+	config LEGACY_VSYSCALL_NONE
+		bool "None"
+		help
+		  There will be no vsyscall mapping at all. This will
+		  eliminate any risk of ASLR bypass due to the vsyscall
+		  fixed address mapping. Attempts to use the vsyscalls
+		  will be reported to dmesg, so that either old or
+		  malicious userspace programs can be identified.
+
+endchoice
+
 config CMDLINE_BOOL
 	bool "Built-in kernel command line"
 	---help---
diff --git a/arch/x86/entry/vsyscall/vsyscall_64.c b/arch/x86/entry/vsyscall/vsyscall_64.c
index 2dcc6ff6fdcc..47e2904b043b 100644
--- a/arch/x86/entry/vsyscall/vsyscall_64.c
+++ b/arch/x86/entry/vsyscall/vsyscall_64.c
@@ -38,7 +38,14 @@
 #define CREATE_TRACE_POINTS
 #include "vsyscall_trace.h"
 
-static enum { EMULATE, NATIVE, NONE } vsyscall_mode = EMULATE;
+static enum { EMULATE, NATIVE, NONE } vsyscall_mode =
+#ifdef CONFIG_LEGACY_VSYSCALL_NATIVE
+	NATIVE;
+#elif CONFIG_LEGACY_VSYSCALL_NONE
+	NONE;
+#else
+	EMULATE;
+#endif
 
 static int __init vsyscall_setup(char *str)
 {
-- 
1.9.1


-- 
Kees Cook
Chrome OS Security

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] x86, vsyscall: add CONFIG to control default
  2015-08-13  0:55 [PATCH] x86, vsyscall: add CONFIG to control default Kees Cook
@ 2015-08-13  2:23 ` Josh Triplett
  2015-08-31 20:13   ` Kees Cook
  2015-09-20 11:29 ` [tip:x86/asm] x86/entry/vsyscall: Add " tip-bot for Kees Cook
  1 sibling, 1 reply; 8+ messages in thread
From: Josh Triplett @ 2015-08-13  2:23 UTC (permalink / raw)
  To: Kees Cook
  Cc: Andy Lutomirski, Thomas Gleixner, Ingo Molnar, H. Peter Anvin,
	x86, linux-kernel

On Wed, Aug 12, 2015 at 05:55:19PM -0700, Kees Cook wrote:
> Most modern systems can run with vsyscall=none. In an effort to provide
> a way for build-time defaults to lack legacy settings, this adds a new
> CONFIG to select the type of vsyscall mapping to use, similar to the
> existing "vsyscall" command line parameter.
> 
> Signed-off-by: Kees Cook <keescook@chromium.org>

Seems reasonable to me.  One question, though: is there *any* reason to
choose "native" over "emulate"?  (Does "emulate" have a sufficient
performance penalty to matter, and do people running old glibc really
care about that performance while still not wanting to upgrade?)
If there is a reason, could you please document it in the
descriptions of the "native" and "emulate" options (as an upside and a
downside, respectively)?  If there isn't, you might consider a patch to
remove "native".

>  arch/x86/Kconfig                      | 49 +++++++++++++++++++++++++++++++++++
>  arch/x86/entry/vsyscall/vsyscall_64.c |  9 ++++++-
>  2 files changed, 57 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index b3a1a5d77d92..fbd0fad714a1 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -2010,6 +2010,55 @@ config COMPAT_VDSO
>  	  If unsure, say N: if you are compiling your own kernel, you
>  	  are unlikely to be using a buggy version of glibc.
>  
> +choice
> +	prompt "vsyscall table for legacy applications"
> +	depends on X86_64
> +	default LEGACY_VSYSCALL_EMULATE
> +	help
> +	  Legacy user code that does not know how to find the vDSO expects
> +	  to be able to issue three syscalls by calling fixed addresses in
> +	  kernel space. Since this location is not randomized with ASLR,
> +	  it can be used to assist security vulnerability exploitation.
> +
> +	  This setting can be changed at boot time via the kernel command
> +	  line parameter vsyscall=[native|emulate|none].
> +
> +	  On a system with recent enough glibc (2.14 or newer) and no
> +	  static binaries, you can say None without a performance penalty
> +	  to improve security.
> +
> +	  If unsure, select "Emulate".
> +
> +	config LEGACY_VSYSCALL_NATIVE
> +		bool "Native"
> +		help
> +		  Actual executable code is located in the fixed vsyscall
> +		  address mapping, implementing time() efficiently. Since
> +		  this makes the mapping executable, it can be used during
> +		  security vulnerability exploitation (traditionally as
> +		  ROP gadgets). This configuration is not recommended.
> +
> +	config LEGACY_VSYSCALL_EMULATE
> +		bool "Emulate"
> +		help
> +		  The kernel traps and emulates calls into the fixed
> +		  vsyscall address mapping. This makes the mapping
> +		  non-executable, but it still contains known contents,
> +		  which could be used in certain rare security vulnerability
> +		  exploits. This configuration is recommended when userspace
> +		  still uses the vsyscall area.
> +
> +	config LEGACY_VSYSCALL_NONE
> +		bool "None"
> +		help
> +		  There will be no vsyscall mapping at all. This will
> +		  eliminate any risk of ASLR bypass due to the vsyscall
> +		  fixed address mapping. Attempts to use the vsyscalls
> +		  will be reported to dmesg, so that either old or
> +		  malicious userspace programs can be identified.
> +
> +endchoice
> +
>  config CMDLINE_BOOL
>  	bool "Built-in kernel command line"
>  	---help---
> diff --git a/arch/x86/entry/vsyscall/vsyscall_64.c b/arch/x86/entry/vsyscall/vsyscall_64.c
> index 2dcc6ff6fdcc..47e2904b043b 100644
> --- a/arch/x86/entry/vsyscall/vsyscall_64.c
> +++ b/arch/x86/entry/vsyscall/vsyscall_64.c
> @@ -38,7 +38,14 @@
>  #define CREATE_TRACE_POINTS
>  #include "vsyscall_trace.h"
>  
> -static enum { EMULATE, NATIVE, NONE } vsyscall_mode = EMULATE;
> +static enum { EMULATE, NATIVE, NONE } vsyscall_mode =
> +#ifdef CONFIG_LEGACY_VSYSCALL_NATIVE
> +	NATIVE;
> +#elif CONFIG_LEGACY_VSYSCALL_NONE
> +	NONE;
> +#else
> +	EMULATE;
> +#endif
>  
>  static int __init vsyscall_setup(char *str)
>  {
> -- 
> 1.9.1
> 
> 
> -- 
> Kees Cook
> Chrome OS Security

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] x86, vsyscall: add CONFIG to control default
  2015-08-13  2:23 ` Josh Triplett
@ 2015-08-31 20:13   ` Kees Cook
  2015-08-31 21:23     ` Andy Lutomirski
  0 siblings, 1 reply; 8+ messages in thread
From: Kees Cook @ 2015-08-31 20:13 UTC (permalink / raw)
  To: Josh Triplett
  Cc: Andy Lutomirski, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, LKML

On Wed, Aug 12, 2015 at 7:23 PM, Josh Triplett <josh@joshtriplett.org> wrote:
> On Wed, Aug 12, 2015 at 05:55:19PM -0700, Kees Cook wrote:
>> Most modern systems can run with vsyscall=none. In an effort to provide
>> a way for build-time defaults to lack legacy settings, this adds a new
>> CONFIG to select the type of vsyscall mapping to use, similar to the
>> existing "vsyscall" command line parameter.
>>
>> Signed-off-by: Kees Cook <keescook@chromium.org>
>
> Seems reasonable to me.  One question, though: is there *any* reason to
> choose "native" over "emulate"?  (Does "emulate" have a sufficient
> performance penalty to matter, and do people running old glibc really
> care about that performance while still not wanting to upgrade?)
> If there is a reason, could you please document it in the
> descriptions of the "native" and "emulate" options (as an upside and a
> downside, respectively)?  If there isn't, you might consider a patch to
> remove "native".

I think "native" is available out of an abundance of caution. Andy
left it available, though I'm not sure if he had plans to remove
"native" entirely.

Can someone from the x86 tree take this patch, or are there other
things to improve?

Thanks!

-Kees

-- 
Kees Cook
Chrome OS Security

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] x86, vsyscall: add CONFIG to control default
  2015-08-31 20:13   ` Kees Cook
@ 2015-08-31 21:23     ` Andy Lutomirski
  2015-09-03 21:08       ` Kees Cook
  0 siblings, 1 reply; 8+ messages in thread
From: Andy Lutomirski @ 2015-08-31 21:23 UTC (permalink / raw)
  To: Kees Cook
  Cc: Josh Triplett, Thomas Gleixner, x86, Ingo Molnar, LKML, H. Peter Anvin

On Aug 31, 2015 1:13 PM, "Kees Cook" <keescook@chromium.org> wrote:
>
> On Wed, Aug 12, 2015 at 7:23 PM, Josh Triplett <josh@joshtriplett.org> wrote:
> > On Wed, Aug 12, 2015 at 05:55:19PM -0700, Kees Cook wrote:
> >> Most modern systems can run with vsyscall=none. In an effort to provide
> >> a way for build-time defaults to lack legacy settings, this adds a new
> >> CONFIG to select the type of vsyscall mapping to use, similar to the
> >> existing "vsyscall" command line parameter.
> >>
> >> Signed-off-by: Kees Cook <keescook@chromium.org>
> >
> > Seems reasonable to me.  One question, though: is there *any* reason to
> > choose "native" over "emulate"?  (Does "emulate" have a sufficient
> > performance penalty to matter, and do people running old glibc really
> > care about that performance while still not wanting to upgrade?)
> > If there is a reason, could you please document it in the
> > descriptions of the "native" and "emulate" options (as an upside and a
> > downside, respectively)?  If there isn't, you might consider a patch to
> > remove "native".
>
> I think "native" is available out of an abundance of caution. Andy
> left it available, though I'm not sure if he had plans to remove
> "native" entirely.

Native adds almost no code and almost no maintenance burden -- it's
really just a PTE bit.

>
> Can someone from the x86 tree take this patch, or are there other
> things to improve?

It looks good to me.

I was thinking about how to control vsyscalls per process, and it's
not so easy.  We can turn off emulation per process trivially (modulo
figuring out the ABI), but the Project Zero thing makes me think that
we want to be able to switch off *read* access.

For almost all purposes, we could just switch off read access globally
with no ill effects.  The problem is that nasty little programs like
pin will start crashing when run on old binaries.

We could allocate two copies of the top pud, switch them out in the
pgd depending on whether vsyscalls are on for the mm, and clearing the
G bit.  It's a bit of a departure for how things work now, and it'll
interact really weirdly with the fixmap code and anything else that
pokes at that part of the kernel page tables (e.g. Xen?)  Hmm.

--Andy

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] x86, vsyscall: add CONFIG to control default
  2015-08-31 21:23     ` Andy Lutomirski
@ 2015-09-03 21:08       ` Kees Cook
  0 siblings, 0 replies; 8+ messages in thread
From: Kees Cook @ 2015-09-03 21:08 UTC (permalink / raw)
  To: Thomas Gleixner, H. Peter Anvin, Ingo Molnar
  Cc: Josh Triplett, Andy Lutomirski, x86, LKML

On Mon, Aug 31, 2015 at 2:23 PM, Andy Lutomirski <luto@amacapital.net> wrote:
> On Aug 31, 2015 1:13 PM, "Kees Cook" <keescook@chromium.org> wrote:
>>
>> On Wed, Aug 12, 2015 at 7:23 PM, Josh Triplett <josh@joshtriplett.org> wrote:
>> > On Wed, Aug 12, 2015 at 05:55:19PM -0700, Kees Cook wrote:
>> >> Most modern systems can run with vsyscall=none. In an effort to provide
>> >> a way for build-time defaults to lack legacy settings, this adds a new
>> >> CONFIG to select the type of vsyscall mapping to use, similar to the
>> >> existing "vsyscall" command line parameter.
>> >>
>> >> Signed-off-by: Kees Cook <keescook@chromium.org>
>> >
>> > Seems reasonable to me.  One question, though: is there *any* reason to
>> > choose "native" over "emulate"?  (Does "emulate" have a sufficient
>> > performance penalty to matter, and do people running old glibc really
>> > care about that performance while still not wanting to upgrade?)
>> > If there is a reason, could you please document it in the
>> > descriptions of the "native" and "emulate" options (as an upside and a
>> > downside, respectively)?  If there isn't, you might consider a patch to
>> > remove "native".
>>
>> I think "native" is available out of an abundance of caution. Andy
>> left it available, though I'm not sure if he had plans to remove
>> "native" entirely.
>
> Native adds almost no code and almost no maintenance burden -- it's
> really just a PTE bit.
>
>>
>> Can someone from the x86 tree take this patch, or are there other
>> things to improve?
>
> It looks good to me.

tglx, hpa, ingo? Can this go into -tip?

Thanks!

-Kees

-- 
Kees Cook
Chrome OS Security

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [tip:x86/asm] x86/entry/vsyscall: Add CONFIG to control default
  2015-08-13  0:55 [PATCH] x86, vsyscall: add CONFIG to control default Kees Cook
  2015-08-13  2:23 ` Josh Triplett
@ 2015-09-20 11:29 ` tip-bot for Kees Cook
  2015-09-21  7:48   ` Borislav Petkov
  1 sibling, 1 reply; 8+ messages in thread
From: tip-bot for Kees Cook @ 2015-09-20 11:29 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: tglx, luto, keescook, josh, peterz, linux-kernel, hpa, mingo, bp,
	brgerst, torvalds, dvlasenk

Commit-ID:  3dc33bd30f3e1c1bcaaafa3482737694debf0f0b
Gitweb:     http://git.kernel.org/tip/3dc33bd30f3e1c1bcaaafa3482737694debf0f0b
Author:     Kees Cook <keescook@chromium.org>
AuthorDate: Wed, 12 Aug 2015 17:55:19 -0700
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Sun, 20 Sep 2015 10:31:06 +0200

x86/entry/vsyscall: Add CONFIG to control default

Most modern systems can run with vsyscall=none. In an effort to
provide a way for build-time defaults to lack legacy settings,
this adds a new CONFIG to select the type of vsyscall mapping to
use, similar to the existing "vsyscall" command line parameter.

Signed-off-by: Kees Cook <keescook@chromium.org>
Acked-by: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Josh Triplett <josh@joshtriplett.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/20150813005519.GA11696@www.outflux.net
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/Kconfig                      | 49 +++++++++++++++++++++++++++++++++++
 arch/x86/entry/vsyscall/vsyscall_64.c |  9 ++++++-
 2 files changed, 57 insertions(+), 1 deletion(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 328c835..9bfb9e1 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -2042,6 +2042,55 @@ config COMPAT_VDSO
 	  If unsure, say N: if you are compiling your own kernel, you
 	  are unlikely to be using a buggy version of glibc.
 
+choice
+	prompt "vsyscall table for legacy applications"
+	depends on X86_64
+	default LEGACY_VSYSCALL_EMULATE
+	help
+	  Legacy user code that does not know how to find the vDSO expects
+	  to be able to issue three syscalls by calling fixed addresses in
+	  kernel space. Since this location is not randomized with ASLR,
+	  it can be used to assist security vulnerability exploitation.
+
+	  This setting can be changed at boot time via the kernel command
+	  line parameter vsyscall=[native|emulate|none].
+
+	  On a system with recent enough glibc (2.14 or newer) and no
+	  static binaries, you can say None without a performance penalty
+	  to improve security.
+
+	  If unsure, select "Emulate".
+
+	config LEGACY_VSYSCALL_NATIVE
+		bool "Native"
+		help
+		  Actual executable code is located in the fixed vsyscall
+		  address mapping, implementing time() efficiently. Since
+		  this makes the mapping executable, it can be used during
+		  security vulnerability exploitation (traditionally as
+		  ROP gadgets). This configuration is not recommended.
+
+	config LEGACY_VSYSCALL_EMULATE
+		bool "Emulate"
+		help
+		  The kernel traps and emulates calls into the fixed
+		  vsyscall address mapping. This makes the mapping
+		  non-executable, but it still contains known contents,
+		  which could be used in certain rare security vulnerability
+		  exploits. This configuration is recommended when userspace
+		  still uses the vsyscall area.
+
+	config LEGACY_VSYSCALL_NONE
+		bool "None"
+		help
+		  There will be no vsyscall mapping at all. This will
+		  eliminate any risk of ASLR bypass due to the vsyscall
+		  fixed address mapping. Attempts to use the vsyscalls
+		  will be reported to dmesg, so that either old or
+		  malicious userspace programs can be identified.
+
+endchoice
+
 config CMDLINE_BOOL
 	bool "Built-in kernel command line"
 	---help---
diff --git a/arch/x86/entry/vsyscall/vsyscall_64.c b/arch/x86/entry/vsyscall/vsyscall_64.c
index b160c0c..76e0fd3 100644
--- a/arch/x86/entry/vsyscall/vsyscall_64.c
+++ b/arch/x86/entry/vsyscall/vsyscall_64.c
@@ -38,7 +38,14 @@
 #define CREATE_TRACE_POINTS
 #include "vsyscall_trace.h"
 
-static enum { EMULATE, NATIVE, NONE } vsyscall_mode = EMULATE;
+static enum { EMULATE, NATIVE, NONE } vsyscall_mode =
+#ifdef CONFIG_LEGACY_VSYSCALL_NATIVE
+	NATIVE;
+#elif CONFIG_LEGACY_VSYSCALL_NONE
+	NONE;
+#else
+	EMULATE;
+#endif
 
 static int __init vsyscall_setup(char *str)
 {

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [tip:x86/asm] x86/entry/vsyscall: Add CONFIG to control default
  2015-09-20 11:29 ` [tip:x86/asm] x86/entry/vsyscall: Add " tip-bot for Kees Cook
@ 2015-09-21  7:48   ` Borislav Petkov
  2015-09-21  8:00     ` [tip:x86/asm] x86/entry/vsyscall: Fix undefined symbol warning tip-bot for Borislav Petkov
  0 siblings, 1 reply; 8+ messages in thread
From: Borislav Petkov @ 2015-09-21  7:48 UTC (permalink / raw)
  To: x86-ml
  Cc: linux-tip-commits, tglx, luto, keescook, josh, peterz,
	linux-kernel, hpa, mingo, brgerst, torvalds, dvlasenk

On Sun, Sep 20, 2015 at 04:29:18AM -0700, tip-bot for Kees Cook wrote:
> Commit-ID:  3dc33bd30f3e1c1bcaaafa3482737694debf0f0b
> Gitweb:     http://git.kernel.org/tip/3dc33bd30f3e1c1bcaaafa3482737694debf0f0b
> Author:     Kees Cook <keescook@chromium.org>
> AuthorDate: Wed, 12 Aug 2015 17:55:19 -0700
> Committer:  Ingo Molnar <mingo@kernel.org>
> CommitDate: Sun, 20 Sep 2015 10:31:06 +0200
> 
> x86/entry/vsyscall: Add CONFIG to control default
> 
> Most modern systems can run with vsyscall=none. In an effort to
> provide a way for build-time defaults to lack legacy settings,
> this adds a new CONFIG to select the type of vsyscall mapping to
> use, similar to the existing "vsyscall" command line parameter.
> 
> Signed-off-by: Kees Cook <keescook@chromium.org>
> Acked-by: Andy Lutomirski <luto@amacapital.net>
> Cc: Borislav Petkov <bp@alien8.de>
> Cc: Brian Gerst <brgerst@gmail.com>
> Cc: Denys Vlasenko <dvlasenk@redhat.com>
> Cc: H. Peter Anvin <hpa@zytor.com>
> Cc: Josh Triplett <josh@joshtriplett.org>
> Cc: Linus Torvalds <torvalds@linux-foundation.org>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Link: http://lkml.kernel.org/r/20150813005519.GA11696@www.outflux.net
> Signed-off-by: Ingo Molnar <mingo@kernel.org>
> ---
>  arch/x86/Kconfig                      | 49 +++++++++++++++++++++++++++++++++++
>  arch/x86/entry/vsyscall/vsyscall_64.c |  9 ++++++-
>  2 files changed, 57 insertions(+), 1 deletion(-)

...

> diff --git a/arch/x86/entry/vsyscall/vsyscall_64.c b/arch/x86/entry/vsyscall/vsyscall_64.c
> index b160c0c..76e0fd3 100644
> --- a/arch/x86/entry/vsyscall/vsyscall_64.c
> +++ b/arch/x86/entry/vsyscall/vsyscall_64.c
> @@ -38,7 +38,14 @@
>  #define CREATE_TRACE_POINTS
>  #include "vsyscall_trace.h"
>  
> -static enum { EMULATE, NATIVE, NONE } vsyscall_mode = EMULATE;
> +static enum { EMULATE, NATIVE, NONE } vsyscall_mode =
> +#ifdef CONFIG_LEGACY_VSYSCALL_NATIVE
> +	NATIVE;
> +#elif CONFIG_LEGACY_VSYSCALL_NONE

My gcc complains about this. If it hasn't been fixed yet, here's a fix:

---
From: Borislav Petkov <bp@suse.de>
Date: Mon, 21 Sep 2015 09:34:23 +0200
Subject: [PATCH] x86/entry/vsyscall: Fix undefined symbol warning

3dc33bd30f3e1 ("x86/entry/vsyscall: Add CONFIG to control default") did
the ifdef/elif thing but gcc doesn't like that:

  arch/x86/entry/vsyscall/vsyscall_64.c:44:7: warning: "CONFIG_LEGACY_VSYSCALL_NONE" is not defined [-Wundef]
   #elif CONFIG_LEGACY_VSYSCALL_NONE
         ^

Use defined() instead.

Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Kees Cook <keescook@chromium.org>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Josh Triplett <josh@joshtriplett.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/20150813005519.GA11696@www.outflux.net
Signed-off-by: Borislav Petkov <bp@suse.de>
---
 arch/x86/entry/vsyscall/vsyscall_64.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/entry/vsyscall/vsyscall_64.c b/arch/x86/entry/vsyscall/vsyscall_64.c
index 76e0fd3ea1fb..174c2549939d 100644
--- a/arch/x86/entry/vsyscall/vsyscall_64.c
+++ b/arch/x86/entry/vsyscall/vsyscall_64.c
@@ -39,9 +39,9 @@
 #include "vsyscall_trace.h"
 
 static enum { EMULATE, NATIVE, NONE } vsyscall_mode =
-#ifdef CONFIG_LEGACY_VSYSCALL_NATIVE
+#if defined(CONFIG_LEGACY_VSYSCALL_NATIVE)
 	NATIVE;
-#elif CONFIG_LEGACY_VSYSCALL_NONE
+#elif defined(CONFIG_LEGACY_VSYSCALL_NONE)
 	NONE;
 #else
 	EMULATE;
-- 
2.1.4

-- 
Regards/Gruss,
    Boris.

ECO tip #101: Trim your mails when you reply.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [tip:x86/asm] x86/entry/vsyscall: Fix undefined symbol warning
  2015-09-21  7:48   ` Borislav Petkov
@ 2015-09-21  8:00     ` tip-bot for Borislav Petkov
  0 siblings, 0 replies; 8+ messages in thread
From: tip-bot for Borislav Petkov @ 2015-09-21  8:00 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: bp, torvalds, hpa, keescook, peterz, mingo, tglx, linux-kernel,
	josh, bp, luto, dvlasenk, brgerst

Commit-ID:  93f13a9f96771a064c716364aebc6e283b186eb8
Gitweb:     http://git.kernel.org/tip/93f13a9f96771a064c716364aebc6e283b186eb8
Author:     Borislav Petkov <bp@alien8.de>
AuthorDate: Mon, 21 Sep 2015 09:48:29 +0200
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Mon, 21 Sep 2015 09:56:59 +0200

x86/entry/vsyscall: Fix undefined symbol warning

Commit:

  3dc33bd30f3e1 ("x86/entry/vsyscall: Add CONFIG to control default")

did the ifdef/elif thing but GCC doesn't like that:

  arch/x86/entry/vsyscall/vsyscall_64.c:44:7: warning: "CONFIG_LEGACY_VSYSCALL_NONE" is not defined [-Wundef]
   #elif CONFIG_LEGACY_VSYSCALL_NONE
         ^

Use defined() instead.

Signed-off-by: Borislav Petkov <bp@suse.de>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Josh Triplett <josh@joshtriplett.org>
Cc: Kees Cook <keescook@chromium.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/20150921074829.GA3550@pd.tnic
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/entry/vsyscall/vsyscall_64.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/entry/vsyscall/vsyscall_64.c b/arch/x86/entry/vsyscall/vsyscall_64.c
index 76e0fd3..174c254 100644
--- a/arch/x86/entry/vsyscall/vsyscall_64.c
+++ b/arch/x86/entry/vsyscall/vsyscall_64.c
@@ -39,9 +39,9 @@
 #include "vsyscall_trace.h"
 
 static enum { EMULATE, NATIVE, NONE } vsyscall_mode =
-#ifdef CONFIG_LEGACY_VSYSCALL_NATIVE
+#if defined(CONFIG_LEGACY_VSYSCALL_NATIVE)
 	NATIVE;
-#elif CONFIG_LEGACY_VSYSCALL_NONE
+#elif defined(CONFIG_LEGACY_VSYSCALL_NONE)
 	NONE;
 #else
 	EMULATE;

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2015-09-21  8:01 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-13  0:55 [PATCH] x86, vsyscall: add CONFIG to control default Kees Cook
2015-08-13  2:23 ` Josh Triplett
2015-08-31 20:13   ` Kees Cook
2015-08-31 21:23     ` Andy Lutomirski
2015-09-03 21:08       ` Kees Cook
2015-09-20 11:29 ` [tip:x86/asm] x86/entry/vsyscall: Add " tip-bot for Kees Cook
2015-09-21  7:48   ` Borislav Petkov
2015-09-21  8:00     ` [tip:x86/asm] x86/entry/vsyscall: Fix undefined symbol warning tip-bot for Borislav Petkov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.