diff options
| -rw-r--r-- | fs/overlayfs/dir.c | 2 | ||||
| -rw-r--r-- | fs/overlayfs/inode.c | 3 |
2 files changed, 3 insertions, 2 deletions
diff --git a/fs/overlayfs/dir.c b/fs/overlayfs/dir.c index 82c129bfe58d..93872bb50230 100644 --- a/fs/overlayfs/dir.c +++ b/fs/overlayfs/dir.c | |||
| @@ -260,7 +260,7 @@ static int ovl_instantiate(struct dentry *dentry, struct inode *inode, | |||
| 260 | * hashed directory inode aliases. | 260 | * hashed directory inode aliases. |
| 261 | */ | 261 | */ |
| 262 | inode = ovl_get_inode(dentry->d_sb, &oip); | 262 | inode = ovl_get_inode(dentry->d_sb, &oip); |
| 263 | if (WARN_ON(IS_ERR(inode))) | 263 | if (IS_ERR(inode)) |
| 264 | return PTR_ERR(inode); | 264 | return PTR_ERR(inode); |
| 265 | } else { | 265 | } else { |
| 266 | WARN_ON(ovl_inode_real(inode) != d_inode(newdentry)); | 266 | WARN_ON(ovl_inode_real(inode) != d_inode(newdentry)); |
diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c index 3b7ed5d2279c..b48273e846ad 100644 --- a/fs/overlayfs/inode.c +++ b/fs/overlayfs/inode.c | |||
| @@ -832,7 +832,7 @@ struct inode *ovl_get_inode(struct super_block *sb, | |||
| 832 | int fsid = bylower ? oip->lowerpath->layer->fsid : 0; | 832 | int fsid = bylower ? oip->lowerpath->layer->fsid : 0; |
| 833 | bool is_dir, metacopy = false; | 833 | bool is_dir, metacopy = false; |
| 834 | unsigned long ino = 0; | 834 | unsigned long ino = 0; |
| 835 | int err = -ENOMEM; | 835 | int err = oip->newinode ? -EEXIST : -ENOMEM; |
| 836 | 836 | ||
| 837 | if (!realinode) | 837 | if (!realinode) |
| 838 | realinode = d_inode(lowerdentry); | 838 | realinode = d_inode(lowerdentry); |
| @@ -917,6 +917,7 @@ out: | |||
| 917 | return inode; | 917 | return inode; |
| 918 | 918 | ||
| 919 | out_err: | 919 | out_err: |
| 920 | pr_warn_ratelimited("overlayfs: failed to get inode (%i)\n", err); | ||
| 920 | inode = ERR_PTR(err); | 921 | inode = ERR_PTR(err); |
| 921 | goto out; | 922 | goto out; |
| 922 | } | 923 | } |
