]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - kernel/bpf/inode.c
Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[mirror_ubuntu-artful-kernel.git] / kernel / bpf / inode.c
index 8f94ca1860cfdcdd9509e40d40c3ad7cbf572e2d..71b75d9c81da0db4786f5ecf03b1fb51cf670af3 100644 (file)
@@ -119,18 +119,10 @@ static int bpf_inode_type(const struct inode *inode, enum bpf_type *type)
        return 0;
 }
 
-static bool bpf_dname_reserved(const struct dentry *dentry)
-{
-       return strchr(dentry->d_name.name, '.');
-}
-
 static int bpf_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
 {
        struct inode *inode;
 
-       if (bpf_dname_reserved(dentry))
-               return -EPERM;
-
        inode = bpf_get_inode(dir->i_sb, dir, mode | S_IFDIR);
        if (IS_ERR(inode))
                return PTR_ERR(inode);
@@ -152,9 +144,6 @@ static int bpf_mkobj_ops(struct inode *dir, struct dentry *dentry,
 {
        struct inode *inode;
 
-       if (bpf_dname_reserved(dentry))
-               return -EPERM;
-
        inode = bpf_get_inode(dir->i_sb, dir, mode | S_IFREG);
        if (IS_ERR(inode))
                return PTR_ERR(inode);
@@ -187,31 +176,21 @@ static int bpf_mkobj(struct inode *dir, struct dentry *dentry, umode_t mode,
        }
 }
 
-static int bpf_link(struct dentry *old_dentry, struct inode *dir,
-                   struct dentry *new_dentry)
+static struct dentry *
+bpf_lookup(struct inode *dir, struct dentry *dentry, unsigned flags)
 {
-       if (bpf_dname_reserved(new_dentry))
-               return -EPERM;
-
-       return simple_link(old_dentry, dir, new_dentry);
-}
-
-static int bpf_rename(struct inode *old_dir, struct dentry *old_dentry,
-                     struct inode *new_dir, struct dentry *new_dentry)
-{
-       if (bpf_dname_reserved(new_dentry))
-               return -EPERM;
-
-       return simple_rename(old_dir, old_dentry, new_dir, new_dentry);
+       if (strchr(dentry->d_name.name, '.'))
+               return ERR_PTR(-EPERM);
+       return simple_lookup(dir, dentry, flags);
 }
 
 static const struct inode_operations bpf_dir_iops = {
-       .lookup         = simple_lookup,
+       .lookup         = bpf_lookup,
        .mknod          = bpf_mkobj,
        .mkdir          = bpf_mkdir,
        .rmdir          = simple_rmdir,
-       .rename         = bpf_rename,
-       .link           = bpf_link,
+       .rename         = simple_rename,
+       .link           = simple_link,
        .unlink         = simple_unlink,
 };