diff options
| -rw-r--r-- | fs/ext2/namei.c | 12 | 
1 files changed, 10 insertions, 2 deletions
diff --git a/fs/ext2/namei.c b/fs/ext2/namei.c index 6524ecaebb7..e1dedb0f787 100644 --- a/fs/ext2/namei.c +++ b/fs/ext2/namei.c @@ -66,8 +66,16 @@ static struct dentry *ext2_lookup(struct inode * dir, struct dentry *dentry, str  	inode = NULL;  	if (ino) {  		inode = ext2_iget(dir->i_sb, ino); -		if (IS_ERR(inode)) -			return ERR_CAST(inode); +		if (unlikely(IS_ERR(inode))) { +			if (PTR_ERR(inode) == -ESTALE) { +				ext2_error(dir->i_sb, __func__, +						"deleted inode referenced: %lu", +						ino); +				return ERR_PTR(-EIO); +			} else { +				return ERR_CAST(inode); +			} +		}  	}  	return d_splice_alias(inode, dentry);  }  |