diff --git a/fs/sdcardfs/dentry.c b/fs/sdcardfs/dentry.c index 5eaccaca3b7..34659df7210 100644 --- a/fs/sdcardfs/dentry.c +++ b/fs/sdcardfs/dentry.c @@ -109,14 +109,16 @@ static int sdcardfs_d_revalidate(struct dentry *dentry, struct nameidata *nd) goto out; /* If our top's inode is gone, we may be out of date */ - inode = dentry->d_inode; + inode = igrab(dentry->d_inode); if (inode) { data = top_data_get(SDCARDFS_I(inode)); - if (data->abandoned) { + if (!data || data->abandoned) { d_drop(dentry); err = 0; } - data_put(data); + if (data) + data_put(data); + iput(inode); } out: