dget_parent() never returns NULL. So this parent = dget_parent(dentry); if (!parent) goto out_dput; dir = igrab(d_inode(parent)); dput(parent); out_dput: is obviously fishy. What is that code trying to do? Is that "dentry might be a root of disconnected tree, in which case we want xfs_filestream_get_parent() to return NULL"? If so, that should be parent = dget_parent(dentry); if (parent != dentry) dir = igrab(d_inode(parent)); dput(parent); If we want dentry itself, that dir = igrab(...) should be unconditional. I'm not familiar enough with that code, and I'd rather not go into YAMassiveSideRTFS, so...