Skip to contentSkip to conversation

retpoline: Add retpoline tag to VERMAGIC

PATCH In review Andi Kleen 5 participants 8 messages Jan 16, 2018 – Jan 18, 2018

lore
Share & tools
lore

Andi Kleen

author
#0 lore raw

PATCH v3 1/1 retpoline: Add retpoline tag to VERMAGIC

From: Andi Kleen <[email protected]>

Add a marker for retpoline to the module VERMAGIC. This catches the case when a non RETPOLINE compiled module gets loaded into a retpoline kernel, making it insecure.

It doesn't handle the case when retpoline has been runtime disabled. Even in this case the match of the retcompile status will be enforced. This implies that even with retpoline run time disabled all modules loaded need to be recompiled.

This supersedes an earlier patch that did the same checking using a new module tag (so it's really a v3)

---
 include/linux/vermagic.h | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
include/linux/vermagic.h +7 -1
index bae807eb2933..853291714ae0 100644
@@ -31,11 +31,17 @@
 #else
 #define MODULE_RANDSTRUCT_PLUGIN
 #endif
+#ifdef RETPOLINE
+#define MODULE_VERMAGIC_RETPOLINE "retpoline "
+#else
+#define MODULE_VERMAGIC_RETPOLINE ""
+#endif
 
 #define VERMAGIC_STRING 						\
 	UTS_RELEASE " "							\
 	MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT 			\
 	MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS	\
 	MODULE_ARCH_VERMAGIC						\
-	MODULE_RANDSTRUCT_PLUGIN
+	MODULE_RANDSTRUCT_PLUGIN					\
+	MODULE_VERMAGIC_RETPOLINE
 
Signature · 1 line
2.14.3
Acked-by on v3 1/1
#1 lore raw
Quoted 11 lines · Andi Kleen

From: Andi Kleen <[email protected]>

Add a marker for retpoline to the module VERMAGIC. This catches the case when a non RETPOLINE compiled module gets loaded into a retpoline kernel, making it insecure.

It doesn't handle the case when retpoline has been runtime disabled. Even in this case the match of the retcompile status will be enforced. This implies that even with retpoline run time disabled all modules loaded need to be recompiled.

Quoted 4 lines

This supersedes an earlier patch that did the same checking using a new module tag (so it's really a v3)

Quoted 31 lines
---
 include/linux/vermagic.h | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
include/linux/vermagic.h +7 -1
index bae807eb2933..853291714ae0 100644
@@ -31,11 +31,17 @@
 #else
 #define MODULE_RANDSTRUCT_PLUGIN
 #endif
+#ifdef RETPOLINE
+#define MODULE_VERMAGIC_RETPOLINE "retpoline "
+#else
+#define MODULE_VERMAGIC_RETPOLINE ""
+#endif
 
 #define VERMAGIC_STRING 						\
 	UTS_RELEASE " "							\
 	MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT 			\
 	MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS	\
 	MODULE_ARCH_VERMAGIC						\
-	MODULE_RANDSTRUCT_PLUGIN
+	MODULE_RANDSTRUCT_PLUGIN					\
+	MODULE_VERMAGIC_RETPOLINE
 
Signature · 1 line
2.14.3
author
#2 lore raw
Quoted 13 lines · Thomas Gleixner
Quoted 11 lines · Andi Kleen

From: Andi Kleen <[email protected]>

Add a marker for retpoline to the module VERMAGIC. This catches the case when a non RETPOLINE compiled module gets loaded into a retpoline kernel, making it insecure.

It doesn't handle the case when retpoline has been runtime disabled. Even in this case the match of the retcompile status will be enforced. This implies that even with retpoline run time disabled all modules loaded need to be recompiled.

Quoted 6 lines
Quoted 4 lines

This supersedes an earlier patch that did the same checking using a new module tag (so it's really a v3)

Thanks. Through which tree should this go?
Or Linus, could you take it directly?

-Andi

#3 lore raw
Quoted 17 lines · Andi Kleen
Quoted 16 lines · Thomas Gleixner
Quoted 14 lines · Andi Kleen

From: Andi Kleen <[email protected]>

Add a marker for retpoline to the module VERMAGIC. This catches the case when a non RETPOLINE compiled module gets loaded into a retpoline kernel, making it insecure.

It doesn't handle the case when retpoline has been runtime disabled. Even in this case the match of the retcompile status will be enforced. This implies that even with retpoline run time disabled all modules loaded need to be recompiled.

This supersedes an earlier patch that did the same checking using a new module tag (so it's really a v3)

Quoted 6 lines
Quoted 3 lines
Quoted 1 line

Thanks. Through which tree should this go?
Or Linus, could you take it directly?

I can route it through x86/pti where I have still stuff to send linuswards.

Thanks,

tglx

Reviewed-by Greg Kroah-Hartman on v3 1/1
#4 lore raw
In reply to Andi Kleen
Quoted 11 lines · Andi Kleen

From: Andi Kleen <[email protected]>

Add a marker for retpoline to the module VERMAGIC. This catches the case when a non RETPOLINE compiled module gets loaded into a retpoline kernel, making it insecure.

It doesn't handle the case when retpoline has been runtime disabled. Even in this case the match of the retcompile status will be enforced. This implies that even with retpoline run time disabled all modules loaded need to be recompiled.

Quoted 4 lines

This supersedes an earlier patch that did the same checking using a new module tag (so it's really a v3)

#5 lore raw

[tip:x86/pti] module: Add retpoline tag to VERMAGIC

In reply to Andi Kleen
module: Add retpoline tag to VERMAGIC
Commit-ID:  6cfb521ac0d5b97470883ff9b7facae264b7ab12
Gitweb:     https://git.kernel.org/tip/6cfb521ac0d5b97470883ff9b7facae264b7ab12
Author:     Andi Kleen <[email protected]>
AuthorDate: Tue, 16 Jan 2018 12:52:28 -0800
Committer:  Thomas Gleixner <[email protected]>
CommitDate: Wed, 17 Jan 2018 11:35:14 +0100

module: Add retpoline tag to VERMAGIC

Add a marker for retpoline to the module VERMAGIC. This catches the case when a non RETPOLINE compiled module gets loaded into a retpoline kernel, making it insecure.

It doesn't handle the case when retpoline has been runtime disabled. Even in this case the match of the retcompile status will be enforced. This implies that even with retpoline run time disabled all modules loaded need to be recompiled.

---
 include/linux/vermagic.h | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
include/linux/vermagic.h +7 -1
index bae807e..8532917 100644
@@ -31,11 +31,17 @@
 #else
 #define MODULE_RANDSTRUCT_PLUGIN
 #endif
+#ifdef RETPOLINE
+#define MODULE_VERMAGIC_RETPOLINE "retpoline "
+#else
+#define MODULE_VERMAGIC_RETPOLINE ""
+#endif
 
 #define VERMAGIC_STRING 						\
 	UTS_RELEASE " "							\
 	MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT 			\
 	MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS	\
 	MODULE_ARCH_VERMAGIC						\
-	MODULE_RANDSTRUCT_PLUGIN
+	MODULE_RANDSTRUCT_PLUGIN					\
+	MODULE_VERMAGIC_RETPOLINE
 
#6 lore raw

Re: [tip:x86/pti] module: Add retpoline tag to VERMAGIC

Quoted 9 lines · tip-bot for Andi Kleen
Commit-ID:  6cfb521ac0d5b97470883ff9b7facae264b7ab12
Gitweb:     https://git.kernel.org/tip/6cfb521ac0d5b97470883ff9b7facae264b7ab12
Author:     Andi Kleen <[email protected]>
AuthorDate: Tue, 16 Jan 2018 12:52:28 -0800
Committer:  Thomas Gleixner <[email protected]>
CommitDate: Wed, 17 Jan 2018 11:35:14 +0100

module: Add retpoline tag to VERMAGIC

Quoted 8 lines

Add a marker for retpoline to the module VERMAGIC. This catches the case when a non RETPOLINE compiled module gets loaded into a retpoline kernel, making it insecure.

It doesn't handle the case when retpoline has been runtime disabled. Even in this case the match of the retcompile status will be enforced. This implies that even with retpoline run time disabled all modules loaded need to be recompiled.

If the user overrides the vermagic and loads the module, shouldn't we update the spectre_v2 sysfs vulnerability status and print a warning like in v2?

Signature · 1 line
Josh
#7 lore raw

Re: [tip:x86/pti] module: Add retpoline tag to VERMAGIC

Quoted 14 lines · Josh Poimboeuf
Quoted 13 lines · tip-bot for Andi Kleen
Commit-ID:  6cfb521ac0d5b97470883ff9b7facae264b7ab12
Gitweb:     https://git.kernel.org/tip/6cfb521ac0d5b97470883ff9b7facae264b7ab12
Author:     Andi Kleen <[email protected]>
AuthorDate: Tue, 16 Jan 2018 12:52:28 -0800
Committer:  Thomas Gleixner <[email protected]>
CommitDate: Wed, 17 Jan 2018 11:35:14 +0100

module: Add retpoline tag to VERMAGIC

Add a marker for retpoline to the module VERMAGIC. This catches the case when a non RETPOLINE compiled module gets loaded into a retpoline kernel, making it insecure.

Quoted 8 lines
Quoted 4 lines

It doesn't handle the case when retpoline has been runtime disabled. Even in this case the match of the retcompile status will be enforced. This implies that even with retpoline run time disabled all modules loaded need to be recompiled.

If the user overrides the vermagic and loads the module, shouldn't we update the spectre_v2 sysfs vulnerability status and print a warning like in v2?

If the user does that then the sysfs output is not our problem anymore, really.

Thanks,

tglx