Loading fs/dcache.c +5 −19 Original line number Diff line number Diff line Loading @@ -1652,26 +1652,12 @@ struct dentry *d_add_ci(struct dentry *dentry, struct inode *inode, * Negative dentry: instantiate it unless the inode is a directory and * already has a dentry. */ spin_lock(&inode->i_lock); if (!S_ISDIR(inode->i_mode) || list_empty(&inode->i_dentry)) { __d_instantiate(found, inode); spin_unlock(&inode->i_lock); security_d_instantiate(found, inode); return found; } /* * In case a directory already has a (disconnected) entry grab a * reference to it, move it in place and use it. */ new = list_entry(inode->i_dentry.next, struct dentry, d_alias); __dget(new); spin_unlock(&inode->i_lock); security_d_instantiate(found, inode); d_move(new, found); iput(inode); new = d_splice_alias(inode, found); if (new) { dput(found); return new; found = new; } return found; err_out: iput(inode); Loading Loading
fs/dcache.c +5 −19 Original line number Diff line number Diff line Loading @@ -1652,26 +1652,12 @@ struct dentry *d_add_ci(struct dentry *dentry, struct inode *inode, * Negative dentry: instantiate it unless the inode is a directory and * already has a dentry. */ spin_lock(&inode->i_lock); if (!S_ISDIR(inode->i_mode) || list_empty(&inode->i_dentry)) { __d_instantiate(found, inode); spin_unlock(&inode->i_lock); security_d_instantiate(found, inode); return found; } /* * In case a directory already has a (disconnected) entry grab a * reference to it, move it in place and use it. */ new = list_entry(inode->i_dentry.next, struct dentry, d_alias); __dget(new); spin_unlock(&inode->i_lock); security_d_instantiate(found, inode); d_move(new, found); iput(inode); new = d_splice_alias(inode, found); if (new) { dput(found); return new; found = new; } return found; err_out: iput(inode); Loading