GFS2: Fix inode allocation error path
[firefly-linux-kernel-4.4.55.git] / fs / gfs2 / inode.c
index 900cf986aadcc155d26028971f71bc6fa9a972ec..044efe273b97da802e708ef5ef0f36407d2ae211 100644 (file)
@@ -736,10 +736,12 @@ static int gfs2_create_inode(struct inode *dir, struct dentry *dentry,
 
 fail_gunlock2:
        gfs2_glock_dq_uninit(ghs + 1);
-       if (inode && !IS_ERR(inode))
-               iput(inode);
 fail_gunlock:
        gfs2_glock_dq_uninit(ghs);
+       if (inode && !IS_ERR(inode)) {
+               set_bit(GIF_ALLOC_FAILED, &GFS2_I(inode)->i_flags);
+               iput(inode);
+       }
 fail:
        if (bh)
                brelse(bh);