dbc4a9b
From: Matthew Garrett <matthew.garrett@nebula.com>
dbc4a9b
Date: Fri, 9 Aug 2013 17:58:15 -0400
dbc4a9b
Subject: [PATCH] Add secure_modules() call
dbc4a9b
dbc4a9b
Provide a single call to allow kernel code to determine whether the system
dbc4a9b
has been configured to either disable module loading entirely or to load
dbc4a9b
only modules signed with a trusted key.
dbc4a9b
dbc4a9b
Bugzilla: N/A
dbc4a9b
Upstream-status: Fedora mustard.  Replaced by securelevels, but that was nak'd
dbc4a9b
dbc4a9b
Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
dbc4a9b
---
dbc4a9b
 include/linux/module.h |  7 +++++++
dbc4a9b
 kernel/module.c        | 10 ++++++++++
dbc4a9b
 2 files changed, 17 insertions(+)
dbc4a9b
dbc4a9b
diff --git a/include/linux/module.h b/include/linux/module.h
dbc4a9b
index 71f282a4e307..341a73ecea2e 100644
dbc4a9b
--- a/include/linux/module.h
dbc4a9b
+++ b/include/linux/module.h
dbc4a9b
@@ -516,6 +516,8 @@ int unregister_module_notifier(struct notifier_block *nb);
dbc4a9b
 
dbc4a9b
 extern void print_modules(void);
dbc4a9b
 
dbc4a9b
+extern bool secure_modules(void);
dbc4a9b
+
dbc4a9b
 #else /* !CONFIG_MODULES... */
dbc4a9b
 
dbc4a9b
 /* Given an address, look for it in the exception tables. */
dbc4a9b
@@ -626,6 +628,11 @@ static inline int unregister_module_notifier(struct notifier_block *nb)
dbc4a9b
 static inline void print_modules(void)
dbc4a9b
 {
dbc4a9b
 }
dbc4a9b
+
dbc4a9b
+static inline bool secure_modules(void)
dbc4a9b
+{
dbc4a9b
+	return false;
dbc4a9b
+}
dbc4a9b
 #endif /* CONFIG_MODULES */
dbc4a9b
 
dbc4a9b
 #ifdef CONFIG_SYSFS
dbc4a9b
diff --git a/kernel/module.c b/kernel/module.c
dbc4a9b
index 03214bd288e9..1f7b4664300e 100644
dbc4a9b
--- a/kernel/module.c
dbc4a9b
+++ b/kernel/module.c
dbc4a9b
@@ -3842,3 +3842,13 @@ void module_layout(struct module *mod,
dbc4a9b
 }
dbc4a9b
 EXPORT_SYMBOL(module_layout);
dbc4a9b
 #endif
dbc4a9b
+
dbc4a9b
+bool secure_modules(void)
dbc4a9b
+{
dbc4a9b
+#ifdef CONFIG_MODULE_SIG
dbc4a9b
+	return (sig_enforce || modules_disabled);
dbc4a9b
+#else
dbc4a9b
+	return modules_disabled;
dbc4a9b
+#endif
dbc4a9b
+}
dbc4a9b
+EXPORT_SYMBOL(secure_modules);
dbc4a9b
-- 
dbc4a9b
1.9.3
dbc4a9b