Untangling ima mess, part 1: alloc_file()
authorAl Viro <viro@zeniv.linux.org.uk>
Wed, 16 Dec 2009 09:53:03 +0000 (04:53 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Wed, 16 Dec 2009 17:16:47 +0000 (12:16 -0500)
There are 2 groups of alloc_file() callers:
* ones that are followed by ima_counts_get
* ones giving non-regular files
So let's pull that ima_counts_get() into alloc_file();
it's a no-op in case of non-regular files.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/file_table.c
fs/hugetlbfs/inode.c
ipc/shm.c
mm/shmem.c

index 361d76be8295b248c14f076f31ef73c47b591a0e..17a55b81be2da6bd73eba44ab71f14e8827e6391 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/fsnotify.h>
 #include <linux/sysctl.h>
 #include <linux/percpu_counter.h>
+#include <linux/ima.h>
 
 #include <asm/atomic.h>
 
@@ -190,6 +191,7 @@ struct file *alloc_file(struct path *path, fmode_t mode,
                error = mnt_clone_write(path->mnt);
                WARN_ON(error);
        }
+       ima_counts_get(file);
        return file;
 }
 
index 6bd41525cd71b5a419f046807adc3bc77e35621d..a0bbd3d1b41a29338fe9cef80e8da032f44b15fe 100644 (file)
@@ -30,7 +30,6 @@
 #include <linux/dnotify.h>
 #include <linux/statfs.h>
 #include <linux/security.h>
-#include <linux/ima.h>
 #include <linux/magic.h>
 
 #include <asm/uaccess.h>
@@ -971,7 +970,6 @@ struct file *hugetlb_file_setup(const char *name, size_t size, int acctflag,
                        &hugetlbfs_file_operations);
        if (!file)
                goto out_dentry; /* inode is already attached */
-       ima_counts_get(file);
 
        return file;
 
index 16e39230aa0d129cbaae12dd44685f8d07c25a67..02620fae8e1f7786a85074cef005172a80d05352 100644 (file)
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -39,7 +39,6 @@
 #include <linux/nsproxy.h>
 #include <linux/mount.h>
 #include <linux/ipc_namespace.h>
-#include <linux/ima.h>
 
 #include <asm/uaccess.h>
 
@@ -895,7 +894,6 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
                                &shm_file_operations);
        if (!file)
                goto out_free;
-       ima_counts_get(file);
 
        file->private_data = sfd;
        file->f_mapping = shp->shm_file->f_mapping;
index d2ec7f029ff45eac81d62e530ec384747e8c5cb2..adf8033afd522ac6786b0c0900cee1da6b964f46 100644 (file)
@@ -29,7 +29,6 @@
 #include <linux/mm.h>
 #include <linux/module.h>
 #include <linux/swap.h>
-#include <linux/ima.h>
 
 static struct vfsmount *shm_mnt;
 
@@ -2669,7 +2668,6 @@ struct file *shmem_file_setup(const char *name, loff_t size, unsigned long flags
        if (!file)
                goto put_dentry;
 
-       ima_counts_get(file);
        return file;
 
 put_dentry: