split cap_mmap_addr() out of cap_file_mmap()
authorAl Viro <viro@zeniv.linux.org.uk>
Wed, 30 May 2012 17:11:37 +0000 (13:11 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 31 May 2012 17:10:54 +0000 (13:10 -0400)
... switch callers.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
include/linux/security.h
security/apparmor/lsm.c
security/commoncap.c
security/selinux/hooks.c
security/smack/smack_lsm.c

index ab0e091ce5facf0047c57191f9e631fd5c4bb791..4ad59c9fa731f67824b8ef36849e3d4bea6c25d6 100644 (file)
@@ -86,6 +86,7 @@ extern int cap_inode_setxattr(struct dentry *dentry, const char *name,
 extern int cap_inode_removexattr(struct dentry *dentry, const char *name);
 extern int cap_inode_need_killpriv(struct dentry *dentry);
 extern int cap_inode_killpriv(struct dentry *dentry);
+extern int cap_mmap_addr(unsigned long addr);
 extern int cap_file_mmap(struct file *file, unsigned long reqprot,
                         unsigned long prot, unsigned long flags,
                         unsigned long addr, unsigned long addr_only);
@@ -2187,7 +2188,7 @@ static inline int security_file_mmap(struct file *file, unsigned long reqprot,
                                     unsigned long addr,
                                     unsigned long addr_only)
 {
-       return cap_file_mmap(file, reqprot, prot, flags, addr, addr_only);
+       return cap_mmap_addr(addr);
 }
 
 static inline int security_file_mprotect(struct vm_area_struct *vma,
index 032daab449b0bb3007562e795593a15d247a2c58..8430d8937afb79453082ca9a792a4a4d63803b28 100644 (file)
@@ -497,7 +497,7 @@ static int apparmor_file_mmap(struct file *file, unsigned long reqprot,
        int rc = 0;
 
        /* do DAC check */
-       rc = cap_file_mmap(file, reqprot, prot, flags, addr, addr_only);
+       rc = cap_mmap_addr(addr);
        if (rc || addr_only)
                return rc;
 
index e771cb1b2d7947f0c85651b38cc7c9c1d3da11d7..ebac3618896ee12bdbeaedb78cbf1c53caa51553 100644 (file)
@@ -958,22 +958,15 @@ int cap_vm_enough_memory(struct mm_struct *mm, long pages)
 }
 
 /*
- * cap_file_mmap - check if able to map given addr
- * @file: unused
- * @reqprot: unused
- * @prot: unused
- * @flags: unused
+ * cap_mmap_addr - check if able to map given addr
  * @addr: address attempting to be mapped
- * @addr_only: unused
  *
  * If the process is attempting to map memory below dac_mmap_min_addr they need
  * CAP_SYS_RAWIO.  The other parameters to this function are unused by the
  * capability security module.  Returns 0 if this mapping should be allowed
  * -EPERM if not.
  */
-int cap_file_mmap(struct file *file, unsigned long reqprot,
-                 unsigned long prot, unsigned long flags,
-                 unsigned long addr, unsigned long addr_only)
+int cap_mmap_addr(unsigned long addr)
 {
        int ret = 0;
 
@@ -986,3 +979,24 @@ int cap_file_mmap(struct file *file, unsigned long reqprot,
        }
        return ret;
 }
+
+/*
+ * cap_file_mmap - check if able to map given addr
+ * @file: unused
+ * @reqprot: unused
+ * @prot: unused
+ * @flags: unused
+ * @addr: address attempting to be mapped
+ * @addr_only: unused
+ *
+ * If the process is attempting to map memory below dac_mmap_min_addr they need
+ * CAP_SYS_RAWIO.  The other parameters to this function are unused by the
+ * capability security module.  Returns 0 if this mapping should be allowed
+ * -EPERM if not.
+ */
+int cap_file_mmap(struct file *file, unsigned long reqprot,
+                 unsigned long prot, unsigned long flags,
+                 unsigned long addr, unsigned long addr_only)
+{
+       return cap_mmap_addr(addr);
+}
index fa2341b683314b0c5505f905e6712538555300ad..25c125eaa3d850d06486c71495c63d530250585e 100644 (file)
@@ -3104,7 +3104,7 @@ static int selinux_file_mmap(struct file *file, unsigned long reqprot,
        }
 
        /* do DAC check on address space usage */
-       rc = cap_file_mmap(file, reqprot, prot, flags, addr, addr_only);
+       rc = cap_mmap_addr(addr);
        if (rc || addr_only)
                return rc;
 
index d583c054580889eff6f4e9080110aad7ae0370d1..a621977187688566d3a903d16d18e4227d3d6cd5 100644 (file)
@@ -1199,7 +1199,7 @@ static int smack_file_mmap(struct file *file,
        int rc;
 
        /* do DAC check on address space usage */
-       rc = cap_file_mmap(file, reqprot, prot, flags, addr, addr_only);
+       rc = cap_mmap_addr(addr);
        if (rc || addr_only)
                return rc;