diff --git a/fs/namei.c b/fs/namei.c index 3ca34388eda3..62f1b8600ec1 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -4513,6 +4513,11 @@ static struct dentry *lookup_open(struct nameidata *nd, struct file *file, } } + if (unlikely(create_error) && !dentry->d_inode) { + error = create_error; + goto out_dput; + } + /* Negative dentry, just create the file */ if (!dentry->d_inode && (open_flag & O_CREAT)) { /* but break the directory lease first! */ @@ -4532,10 +4537,6 @@ static struct dentry *lookup_open(struct nameidata *nd, struct file *file, if (error) goto out_dput; } - if (unlikely(create_error) && !dentry->d_inode) { - error = create_error; - goto out_dput; - } out: if (!IS_ERR(dentry)) { if (file->f_mode & FMODE_CREATED)