set dev usb
[cascardo/linux.git] / security / security.c
index bf619ff..84903b9 100644 (file)
@@ -132,6 +132,10 @@ int __init register_security(struct security_operations *ops)
 
 int security_ptrace_access_check(struct task_struct *child, unsigned int mode)
 {
+       int rc;
+       rc = yama_ptrace_access_check(child, mode);
+       if (rc)
+               return rc;
        return security_ops->ptrace_access_check(child, mode);
 }
 
@@ -400,8 +404,12 @@ int security_path_symlink(struct path *dir, struct dentry *dentry,
 int security_path_link(struct dentry *old_dentry, struct path *new_dir,
                       struct dentry *new_dentry)
 {
+       int rc;
        if (unlikely(IS_PRIVATE(old_dentry->d_inode)))
                return 0;
+       rc = yama_path_link(old_dentry, new_dir, new_dentry);
+       if (rc)
+               return rc;
        return security_ops->path_link(old_dentry, new_dir, new_dentry);
 }
 
@@ -515,8 +523,12 @@ int security_inode_readlink(struct dentry *dentry)
 
 int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd)
 {
+       int rc;
        if (unlikely(IS_PRIVATE(dentry->d_inode)))
                return 0;
+       rc = yama_inode_follow_link(dentry, nd);
+       if (rc)
+               return rc;
        return security_ops->inode_follow_link(dentry, nd);
 }
 
@@ -719,6 +731,7 @@ int security_task_create(unsigned long clone_flags)
 
 void security_task_free(struct task_struct *task)
 {
+       yama_task_free(task);
        security_ops->task_free(task);
 }
 
@@ -757,6 +770,11 @@ int security_kernel_module_request(char *kmod_name)
        return security_ops->kernel_module_request(kmod_name);
 }
 
+int security_kernel_module_from_file(struct file *file)
+{
+       return security_ops->kernel_module_from_file(file);
+}
+
 int security_task_fix_setuid(struct cred *new, const struct cred *old,
                             int flags)
 {
@@ -834,6 +852,10 @@ int security_task_wait(struct task_struct *p)
 int security_task_prctl(int option, unsigned long arg2, unsigned long arg3,
                         unsigned long arg4, unsigned long arg5)
 {
+       int rc;
+       rc = yama_task_prctl(option, arg2, arg3, arg4, arg5);
+       if (rc != -ENOSYS)
+               return rc;
        return security_ops->task_prctl(option, arg2, arg3, arg4, arg5);
 }