diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2018-06-29 11:59:37 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2018-08-03 16:03:31 -0400 |
commit | a6cbedfa8783b42b9272c05297865bdb501005cb (patch) | |
tree | 323ed4dc3ecfaf61fbd8b4fa949edebfba552d71 | |
parent | 2e5afe54e0cd6fce79b51ca547caf08a990ad56d (diff) |
jfs: switch to discard_new_inode()
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>
-rw-r--r-- | fs/jfs/jfs_inode.c | 8 | ||||
-rw-r--r-- | fs/jfs/namei.c | 12 |
2 files changed, 8 insertions, 12 deletions
diff --git a/fs/jfs/jfs_inode.c b/fs/jfs/jfs_inode.c index 5e9b7bb3aabf..96732c24b054 100644 --- a/fs/jfs/jfs_inode.c +++ b/fs/jfs/jfs_inode.c | |||
@@ -61,8 +61,7 @@ struct inode *ialloc(struct inode *parent, umode_t mode) | |||
61 | inode = new_inode(sb); | 61 | inode = new_inode(sb); |
62 | if (!inode) { | 62 | if (!inode) { |
63 | jfs_warn("ialloc: new_inode returned NULL!"); | 63 | jfs_warn("ialloc: new_inode returned NULL!"); |
64 | rc = -ENOMEM; | 64 | return ERR_PTR(-ENOMEM); |
65 | goto fail; | ||
66 | } | 65 | } |
67 | 66 | ||
68 | jfs_inode = JFS_IP(inode); | 67 | jfs_inode = JFS_IP(inode); |
@@ -141,9 +140,10 @@ fail_drop: | |||
141 | dquot_drop(inode); | 140 | dquot_drop(inode); |
142 | inode->i_flags |= S_NOQUOTA; | 141 | inode->i_flags |= S_NOQUOTA; |
143 | clear_nlink(inode); | 142 | clear_nlink(inode); |
144 | unlock_new_inode(inode); | 143 | discard_new_inode(inode); |
144 | return ERR_PTR(rc); | ||
145 | |||
145 | fail_put: | 146 | fail_put: |
146 | iput(inode); | 147 | iput(inode); |
147 | fail: | ||
148 | return ERR_PTR(rc); | 148 | return ERR_PTR(rc); |
149 | } | 149 | } |
diff --git a/fs/jfs/namei.c b/fs/jfs/namei.c index 56c3fcbfe80e..14528c0ffe63 100644 --- a/fs/jfs/namei.c +++ b/fs/jfs/namei.c | |||
@@ -175,8 +175,7 @@ static int jfs_create(struct inode *dip, struct dentry *dentry, umode_t mode, | |||
175 | if (rc) { | 175 | if (rc) { |
176 | free_ea_wmap(ip); | 176 | free_ea_wmap(ip); |
177 | clear_nlink(ip); | 177 | clear_nlink(ip); |
178 | unlock_new_inode(ip); | 178 | discard_new_inode(ip); |
179 | iput(ip); | ||
180 | } else { | 179 | } else { |
181 | d_instantiate_new(dentry, ip); | 180 | d_instantiate_new(dentry, ip); |
182 | } | 181 | } |
@@ -309,8 +308,7 @@ static int jfs_mkdir(struct inode *dip, struct dentry *dentry, umode_t mode) | |||
309 | if (rc) { | 308 | if (rc) { |
310 | free_ea_wmap(ip); | 309 | free_ea_wmap(ip); |
311 | clear_nlink(ip); | 310 | clear_nlink(ip); |
312 | unlock_new_inode(ip); | 311 | discard_new_inode(ip); |
313 | iput(ip); | ||
314 | } else { | 312 | } else { |
315 | d_instantiate_new(dentry, ip); | 313 | d_instantiate_new(dentry, ip); |
316 | } | 314 | } |
@@ -1054,8 +1052,7 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry, | |||
1054 | if (rc) { | 1052 | if (rc) { |
1055 | free_ea_wmap(ip); | 1053 | free_ea_wmap(ip); |
1056 | clear_nlink(ip); | 1054 | clear_nlink(ip); |
1057 | unlock_new_inode(ip); | 1055 | discard_new_inode(ip); |
1058 | iput(ip); | ||
1059 | } else { | 1056 | } else { |
1060 | d_instantiate_new(dentry, ip); | 1057 | d_instantiate_new(dentry, ip); |
1061 | } | 1058 | } |
@@ -1441,8 +1438,7 @@ static int jfs_mknod(struct inode *dir, struct dentry *dentry, | |||
1441 | if (rc) { | 1438 | if (rc) { |
1442 | free_ea_wmap(ip); | 1439 | free_ea_wmap(ip); |
1443 | clear_nlink(ip); | 1440 | clear_nlink(ip); |
1444 | unlock_new_inode(ip); | 1441 | discard_new_inode(ip); |
1445 | iput(ip); | ||
1446 | } else { | 1442 | } else { |
1447 | d_instantiate_new(dentry, ip); | 1443 | d_instantiate_new(dentry, ip); |
1448 | } | 1444 | } |