diff options
Diffstat (limited to 'fs/proc/generic.c')
| -rw-r--r-- | fs/proc/generic.c | 10 | 
1 files changed, 6 insertions, 4 deletions
| diff --git a/fs/proc/generic.c b/fs/proc/generic.c index a3e22803cddf..5635453cd476 100644 --- a/fs/proc/generic.c +++ b/fs/proc/generic.c @@ -254,8 +254,11 @@ struct dentry *proc_lookup_de(struct inode *dir, struct dentry *dentry,  		inode = proc_get_inode(dir->i_sb, de);  		if (!inode)  			return ERR_PTR(-ENOMEM); -		d_set_d_op(dentry, de->proc_dops); -		return d_splice_alias(inode, dentry); +		if (de->flags & PROC_ENTRY_FORCE_LOOKUP) +			return d_splice_alias_ops(inode, dentry, +						  &proc_net_dentry_ops); +		return d_splice_alias_ops(inode, dentry, +					  &proc_misc_dentry_ops);  	}  	read_unlock(&proc_subdir_lock);  	return ERR_PTR(-ENOENT); @@ -448,9 +451,8 @@ static struct proc_dir_entry *__proc_create(struct proc_dir_entry **parent,  	INIT_LIST_HEAD(&ent->pde_openers);  	proc_set_user(ent, (*parent)->uid, (*parent)->gid); -	ent->proc_dops = &proc_misc_dentry_ops;  	/* Revalidate everything under /proc/${pid}/net */ -	if ((*parent)->proc_dops == &proc_net_dentry_ops) +	if ((*parent)->flags & PROC_ENTRY_FORCE_LOOKUP)  		pde_force_lookup(ent);  out: | 
