diff options
| author | Kees Cook <keescook@chromium.org> | 2012-10-16 07:32:07 +1030 | 
|---|---|---|
| committer | Rusty Russell <rusty@rustcorp.com.au> | 2012-12-14 13:05:24 +1030 | 
| commit | 2e72d51b4ac32989496870cd8171b3682fea1839 (patch) | |
| tree | b8190d17aa5d59508f8c979ce0160f21bef89500 /security/capability.c | |
| parent | 2f3238aebedb243804f58d62d57244edec4149b2 (diff) | |
| download | olio-linux-3.10-2e72d51b4ac32989496870cd8171b3682fea1839.tar.xz olio-linux-3.10-2e72d51b4ac32989496870cd8171b3682fea1839.zip  | |
security: introduce kernel_module_from_file hook
Now that kernel module origins can be reasoned about, provide a hook to
the LSMs to make policy decisions about the module file. This will let
Chrome OS enforce that loadable kernel modules can only come from its
read-only hash-verified root filesystem. Other LSMs can, for example,
read extended attributes for signatures, etc.
Signed-off-by: Kees Cook <keescook@chromium.org>
Acked-by: Serge E. Hallyn <serge.hallyn@canonical.com>
Acked-by: Eric Paris <eparis@redhat.com>
Acked-by: Mimi Zohar <zohar@us.ibm.com>
Acked-by: James Morris <james.l.morris@oracle.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'security/capability.c')
| -rw-r--r-- | security/capability.c | 6 | 
1 files changed, 6 insertions, 0 deletions
diff --git a/security/capability.c b/security/capability.c index b14a30c234b..0fe5a026aef 100644 --- a/security/capability.c +++ b/security/capability.c @@ -395,6 +395,11 @@ static int cap_kernel_module_request(char *kmod_name)  	return 0;  } +static int cap_kernel_module_from_file(struct file *file) +{ +	return 0; +} +  static int cap_task_setpgid(struct task_struct *p, pid_t pgid)  {  	return 0; @@ -967,6 +972,7 @@ void __init security_fixup_ops(struct security_operations *ops)  	set_to_cap_if_null(ops, kernel_act_as);  	set_to_cap_if_null(ops, kernel_create_files_as);  	set_to_cap_if_null(ops, kernel_module_request); +	set_to_cap_if_null(ops, kernel_module_from_file);  	set_to_cap_if_null(ops, task_fix_setuid);  	set_to_cap_if_null(ops, task_setpgid);  	set_to_cap_if_null(ops, task_getpgid);  |