make simple_positive() public
[firefly-linux-kernel-4.4.55.git] / security / inode.c
index 131a3c49f766444f167f88d19b712ef80ee47a66..6df0d8dae1e0d9b8b1c482d0f2eca622a3e0e414 100644 (file)
 static struct vfsmount *mount;
 static int mount_count;
 
-static inline int positive(struct dentry *dentry)
-{
-       return dentry->d_inode && !d_unhashed(dentry);
-}
-
 static int fill_super(struct super_block *sb, void *data, int silent)
 {
        static struct tree_descr files[] = {{""}};
@@ -102,14 +97,14 @@ struct dentry *securityfs_create_file(const char *name, umode_t mode,
        if (!parent)
                parent = mount->mnt_root;
 
-       dir = parent->d_inode;
+       dir = d_inode(parent);
 
        mutex_lock(&dir->i_mutex);
        dentry = lookup_one_len(name, parent, strlen(name));
        if (IS_ERR(dentry))
                goto out;
 
-       if (dentry->d_inode) {
+       if (d_really_is_positive(dentry)) {
                error = -EEXIST;
                goto out1;
        }
@@ -197,20 +192,18 @@ void securityfs_remove(struct dentry *dentry)
                return;
 
        parent = dentry->d_parent;
-       if (!parent || !parent->d_inode)
+       if (!parent || d_really_is_negative(parent))
                return;
 
-       mutex_lock(&parent->d_inode->i_mutex);
-       if (positive(dentry)) {
-               if (dentry->d_inode) {
-                       if (d_is_dir(dentry))
-                               simple_rmdir(parent->d_inode, dentry);
-                       else
-                               simple_unlink(parent->d_inode, dentry);
-                       dput(dentry);
-               }
+       mutex_lock(&d_inode(parent)->i_mutex);
+       if (simple_positive(dentry)) {
+               if (d_is_dir(dentry))
+                       simple_rmdir(d_inode(parent), dentry);
+               else
+                       simple_unlink(d_inode(parent), dentry);
+               dput(dentry);
        }
-       mutex_unlock(&parent->d_inode->i_mutex);
+       mutex_unlock(&d_inode(parent)->i_mutex);
        simple_release_fs(&mount, &mount_count);
 }
 EXPORT_SYMBOL_GPL(securityfs_remove);