|
@@ -412,8 +412,7 @@ static const struct dentry_operations proc_dentry_operations =
|
|
|
struct dentry *proc_lookup_de(struct proc_dir_entry *de, struct inode *dir,
|
|
|
struct dentry *dentry)
|
|
|
{
|
|
|
- struct inode *inode = NULL;
|
|
|
- int error = -ENOENT;
|
|
|
+ struct inode *inode;
|
|
|
|
|
|
spin_lock(&proc_subdir_lock);
|
|
|
for (de = de->subdir; de ; de = de->next) {
|
|
@@ -422,22 +421,16 @@ struct dentry *proc_lookup_de(struct proc_dir_entry *de, struct inode *dir,
|
|
|
if (!memcmp(dentry->d_name.name, de->name, de->namelen)) {
|
|
|
pde_get(de);
|
|
|
spin_unlock(&proc_subdir_lock);
|
|
|
- error = -ENOMEM;
|
|
|
inode = proc_get_inode(dir->i_sb, de);
|
|
|
- goto out_unlock;
|
|
|
+ if (!inode)
|
|
|
+ return ERR_PTR(-ENOMEM);
|
|
|
+ d_set_d_op(dentry, &proc_dentry_operations);
|
|
|
+ d_add(dentry, inode);
|
|
|
+ return NULL;
|
|
|
}
|
|
|
}
|
|
|
spin_unlock(&proc_subdir_lock);
|
|
|
-out_unlock:
|
|
|
-
|
|
|
- if (inode) {
|
|
|
- d_set_d_op(dentry, &proc_dentry_operations);
|
|
|
- d_add(dentry, inode);
|
|
|
- return NULL;
|
|
|
- }
|
|
|
- if (de)
|
|
|
- pde_put(de);
|
|
|
- return ERR_PTR(error);
|
|
|
+ return ERR_PTR(-ENOENT);
|
|
|
}
|
|
|
|
|
|
struct dentry *proc_lookup(struct inode *dir, struct dentry *dentry,
|