diff options
Diffstat (limited to 'fs/proc/inode.c')
| -rw-r--r-- | fs/proc/inode.c | 10 | 
1 files changed, 3 insertions, 7 deletions
diff --git a/fs/proc/inode.c b/fs/proc/inode.c index 98a7d2870be..70322e1a4f0 100644 --- a/fs/proc/inode.c +++ b/fs/proc/inode.c @@ -445,12 +445,9 @@ static const struct file_operations proc_reg_file_ops_no_compat = {  struct inode *proc_get_inode(struct super_block *sb, struct proc_dir_entry *de)  { -	struct inode * inode; +	struct inode *inode = iget_locked(sb, de->low_ino); -	inode = iget_locked(sb, de->low_ino); -	if (!inode) -		return NULL; -	if (inode->i_state & I_NEW) { +	if (inode && (inode->i_state & I_NEW)) {  		inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME;  		PROC_I(inode)->pde = de; @@ -482,7 +479,7 @@ struct inode *proc_get_inode(struct super_block *sb, struct proc_dir_entry *de)  	} else  	       pde_put(de);  	return inode; -}			 +}  int proc_fill_super(struct super_block *s)  { @@ -499,7 +496,6 @@ int proc_fill_super(struct super_block *s)  	root_inode = proc_get_inode(s, &proc_root);  	if (!root_inode) {  		printk(KERN_ERR "proc_fill_super: get root inode failed\n"); -		pde_put(&proc_root);  		return -ENOMEM;  	}  |