aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/integrity.h6
-rw-r--r--init/main.c6
-rw-r--r--security/integrity/iint.c11
3 files changed, 22 insertions, 1 deletions
diff --git a/include/linux/integrity.h b/include/linux/integrity.h
index 83222cebd47b..c2d6082a1a4c 100644
--- a/include/linux/integrity.h
+++ b/include/linux/integrity.h
@@ -24,6 +24,7 @@ enum integrity_status {
24#ifdef CONFIG_INTEGRITY 24#ifdef CONFIG_INTEGRITY
25extern struct integrity_iint_cache *integrity_inode_get(struct inode *inode); 25extern struct integrity_iint_cache *integrity_inode_get(struct inode *inode);
26extern void integrity_inode_free(struct inode *inode); 26extern void integrity_inode_free(struct inode *inode);
27extern void __init integrity_load_keys(void);
27 28
28#else 29#else
29static inline struct integrity_iint_cache * 30static inline struct integrity_iint_cache *
@@ -36,5 +37,10 @@ static inline void integrity_inode_free(struct inode *inode)
36{ 37{
37 return; 38 return;
38} 39}
40
41static inline void integrity_load_keys(void)
42{
43}
39#endif /* CONFIG_INTEGRITY */ 44#endif /* CONFIG_INTEGRITY */
45
40#endif /* _LINUX_INTEGRITY_H */ 46#endif /* _LINUX_INTEGRITY_H */
diff --git a/init/main.c b/init/main.c
index e8ae1fef0908..2c1928d08b78 100644
--- a/init/main.c
+++ b/init/main.c
@@ -78,6 +78,7 @@
78#include <linux/context_tracking.h> 78#include <linux/context_tracking.h>
79#include <linux/random.h> 79#include <linux/random.h>
80#include <linux/list.h> 80#include <linux/list.h>
81#include <linux/integrity.h>
81 82
82#include <asm/io.h> 83#include <asm/io.h>
83#include <asm/bugs.h> 84#include <asm/bugs.h>
@@ -1026,8 +1027,11 @@ static noinline void __init kernel_init_freeable(void)
1026 * Ok, we have completed the initial bootup, and 1027 * Ok, we have completed the initial bootup, and
1027 * we're essentially up and running. Get rid of the 1028 * we're essentially up and running. Get rid of the
1028 * initmem segments and start the user-mode stuff.. 1029 * initmem segments and start the user-mode stuff..
1030 *
1031 * rootfs is available now, try loading the public keys
1032 * and default modules
1029 */ 1033 */
1030 1034
1031 /* rootfs is available now, try loading default modules */ 1035 integrity_load_keys();
1032 load_default_modules(); 1036 load_default_modules();
1033} 1037}
diff --git a/security/integrity/iint.c b/security/integrity/iint.c
index dbee618526b6..df45640fbac6 100644
--- a/security/integrity/iint.c
+++ b/security/integrity/iint.c
@@ -245,3 +245,14 @@ out:
245 fput(file); 245 fput(file);
246 return rc; 246 return rc;
247} 247}
248
249/*
250 * integrity_load_keys - load integrity keys hook
251 *
252 * Hooks is called from init/main.c:kernel_init_freeable()
253 * when rootfs is ready
254 */
255void __init integrity_load_keys(void)
256{
257 ima_load_x509();
258}