proc: ->low_ino cleanup
- ->low_ino is write-once field -- reading it under locks is unnecessary. - /proc/$PID stuff never reaches pde_put()/free_proc_entry() -- PROC_DYNAMIC_FIRST check never triggers. - in proc_get_inode(), inode number always matches proc dir entry, so save one parameter. Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
9d6de12f70
commit
6d1b6e4eff
@@ -425,13 +425,10 @@ struct dentry *proc_lookup_de(struct proc_dir_entry *de, struct inode *dir,
|
||||
if (de->namelen != dentry->d_name.len)
|
||||
continue;
|
||||
if (!memcmp(dentry->d_name.name, de->name, de->namelen)) {
|
||||
unsigned int ino;
|
||||
|
||||
ino = de->low_ino;
|
||||
pde_get(de);
|
||||
spin_unlock(&proc_subdir_lock);
|
||||
error = -EINVAL;
|
||||
inode = proc_get_inode(dir->i_sb, ino, de);
|
||||
inode = proc_get_inode(dir->i_sb, de);
|
||||
goto out_unlock;
|
||||
}
|
||||
}
|
||||
@@ -768,12 +765,7 @@ EXPORT_SYMBOL(proc_create_data);
|
||||
|
||||
static void free_proc_entry(struct proc_dir_entry *de)
|
||||
{
|
||||
unsigned int ino = de->low_ino;
|
||||
|
||||
if (ino < PROC_DYNAMIC_FIRST)
|
||||
return;
|
||||
|
||||
release_inode_number(ino);
|
||||
release_inode_number(de->low_ino);
|
||||
|
||||
if (S_ISLNK(de->mode))
|
||||
kfree(de->data);
|
||||
|
Reference in New Issue
Block a user