File tree Expand file tree Collapse file tree 5 files changed +18
-12
lines changed Expand file tree Collapse file tree 5 files changed +18
-12
lines changed Original file line number Diff line number Diff line change @@ -133,7 +133,6 @@ static inline initcall_t initcall_from_entry(initcall_entry_t *entry)
133
133
#endif
134
134
135
135
extern initcall_entry_t __con_initcall_start [], __con_initcall_end [];
136
- extern initcall_entry_t __start_lsm_info [], __end_lsm_info [];
137
136
138
137
/* Used for contructor calls. */
139
138
typedef void (* ctor_fn_t )(void );
@@ -236,7 +235,6 @@ extern bool initcall_debug;
236
235
static exitcall_t __exitcall_##fn __exit_call = fn
237
236
238
237
#define console_initcall (fn ) ___define_initcall(fn,, .con_initcall)
239
- #define security_initcall (fn ) ___define_initcall(fn,, .lsm_info)
240
238
241
239
struct obs_kernel_param {
242
240
const char * str ;
Original file line number Diff line number Diff line change @@ -2039,6 +2039,18 @@ extern char *lsm_names;
2039
2039
extern void security_add_hooks (struct security_hook_list * hooks , int count ,
2040
2040
char * lsm );
2041
2041
2042
+ struct lsm_info {
2043
+ int (* init )(void ); /* Required. */
2044
+ };
2045
+
2046
+ extern struct lsm_info __start_lsm_info [], __end_lsm_info [];
2047
+
2048
+ #define security_initcall (lsm ) \
2049
+ static struct lsm_info __lsm_##lsm \
2050
+ __used __section(.lsm_info.init) \
2051
+ __aligned(sizeof(unsigned long)) \
2052
+ = { .init = lsm, }
2053
+
2042
2054
#ifdef CONFIG_SECURITY_SELINUX_DISABLE
2043
2055
/*
2044
2056
* Assuring the safety of deleting a security module is up to
Original file line number Diff line number Diff line change @@ -123,7 +123,6 @@ extern void cleanup_module(void);
123
123
#define late_initcall_sync (fn ) module_init(fn)
124
124
125
125
#define console_initcall (fn ) module_init(fn)
126
- #define security_initcall (fn ) module_init(fn)
127
126
128
127
/* Each module must use one module_init(). */
129
128
#define module_init (initfn ) \
Original file line number Diff line number Diff line change 22
22
#include <linux/file.h>
23
23
#include <linux/uaccess.h>
24
24
#include <linux/security.h>
25
+ #include <linux/lsm_hooks.h>
25
26
#include "integrity.h"
26
27
27
28
static struct rb_root integrity_iint_tree = RB_ROOT ;
Original file line number Diff line number Diff line change @@ -43,16 +43,12 @@ char *lsm_names;
43
43
static __initdata char chosen_lsm [SECURITY_NAME_MAX + 1 ] =
44
44
CONFIG_DEFAULT_SECURITY ;
45
45
46
- static void __init do_security_initcalls (void )
46
+ static void __init major_lsm_init (void )
47
47
{
48
- initcall_t call ;
49
- initcall_entry_t * ce ;
48
+ struct lsm_info * lsm ;
50
49
51
- ce = __start_lsm_info ;
52
- while (ce < __end_lsm_info ) {
53
- call = initcall_from_entry (ce );
54
- call ();
55
- ce ++ ;
50
+ for (lsm = __start_lsm_info ; lsm < __end_lsm_info ; lsm ++ ) {
51
+ lsm -> init ();
56
52
}
57
53
}
58
54
@@ -82,7 +78,7 @@ int __init security_init(void)
82
78
/*
83
79
* Load all the remaining security modules.
84
80
*/
85
- do_security_initcalls ();
81
+ major_lsm_init ();
86
82
87
83
return 0 ;
88
84
}
You can’t perform that action at this time.
0 commit comments