OSDN Git Service

jfs: switch to discard_new_inode()
authorAl Viro <viro@zeniv.linux.org.uk>
Fri, 29 Jun 2018 15:59:37 +0000 (11:59 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 3 Aug 2018 20:03:31 +0000 (16:03 -0400)
we don't want open-by-handle to pick an in-core inode that
has failed setup halfway through.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/jfs/jfs_inode.c
fs/jfs/namei.c

index 5e9b7bb..96732c2 100644 (file)
@@ -61,8 +61,7 @@ struct inode *ialloc(struct inode *parent, umode_t mode)
        inode = new_inode(sb);
        if (!inode) {
                jfs_warn("ialloc: new_inode returned NULL!");
-               rc = -ENOMEM;
-               goto fail;
+               return ERR_PTR(-ENOMEM);
        }
 
        jfs_inode = JFS_IP(inode);
@@ -141,9 +140,10 @@ fail_drop:
        dquot_drop(inode);
        inode->i_flags |= S_NOQUOTA;
        clear_nlink(inode);
-       unlock_new_inode(inode);
+       discard_new_inode(inode);
+       return ERR_PTR(rc);
+
 fail_put:
        iput(inode);
-fail:
        return ERR_PTR(rc);
 }
index 56c3fcb..14528c0 100644 (file)
@@ -175,8 +175,7 @@ static int jfs_create(struct inode *dip, struct dentry *dentry, umode_t mode,
        if (rc) {
                free_ea_wmap(ip);
                clear_nlink(ip);
-               unlock_new_inode(ip);
-               iput(ip);
+               discard_new_inode(ip);
        } else {
                d_instantiate_new(dentry, ip);
        }
@@ -309,8 +308,7 @@ static int jfs_mkdir(struct inode *dip, struct dentry *dentry, umode_t mode)
        if (rc) {
                free_ea_wmap(ip);
                clear_nlink(ip);
-               unlock_new_inode(ip);
-               iput(ip);
+               discard_new_inode(ip);
        } else {
                d_instantiate_new(dentry, ip);
        }
@@ -1054,8 +1052,7 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
        if (rc) {
                free_ea_wmap(ip);
                clear_nlink(ip);
-               unlock_new_inode(ip);
-               iput(ip);
+               discard_new_inode(ip);
        } else {
                d_instantiate_new(dentry, ip);
        }
@@ -1441,8 +1438,7 @@ static int jfs_mknod(struct inode *dir, struct dentry *dentry,
        if (rc) {
                free_ea_wmap(ip);
                clear_nlink(ip);
-               unlock_new_inode(ip);
-               iput(ip);
+               discard_new_inode(ip);
        } else {
                d_instantiate_new(dentry, ip);
        }