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;
} else
pde_put(de);
return inode;
-}
+}
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;
}