]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - security/security.c
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma
[linux.git] / security / security.c
index 5dce67070cdf3344b4ce65a228b80e9baff2dee4..47cfff01d7ec01c522620aeef60643781577e5ed 100644 (file)
@@ -118,6 +118,8 @@ static int lsm_append(char *new, char **result)
 
        if (*result == NULL) {
                *result = kstrdup(new, GFP_KERNEL);
+               if (*result == NULL)
+                       return -ENOMEM;
        } else {
                /* Check if it is the last registered name */
                if (match_last_lsm(*result, new))
@@ -1030,7 +1032,12 @@ int security_kernel_create_files_as(struct cred *new, struct inode *inode)
 
 int security_kernel_module_request(char *kmod_name)
 {
-       return call_int_hook(kernel_module_request, 0, kmod_name);
+       int ret;
+
+       ret = call_int_hook(kernel_module_request, 0, kmod_name);
+       if (ret)
+               return ret;
+       return integrity_kernel_module_request(kmod_name);
 }
 
 int security_kernel_read_file(struct file *file, enum kernel_read_file_id id)
@@ -1056,6 +1063,17 @@ int security_kernel_post_read_file(struct file *file, char *buf, loff_t size,
 }
 EXPORT_SYMBOL_GPL(security_kernel_post_read_file);
 
+int security_kernel_load_data(enum kernel_load_data_id id)
+{
+       int ret;
+
+       ret = call_int_hook(kernel_load_data, 0, id);
+       if (ret)
+               return ret;
+       return ima_load_data(id);
+}
+EXPORT_SYMBOL_GPL(security_kernel_load_data);
+
 int security_task_fix_setuid(struct cred *new, const struct cred *old,
                             int flags)
 {