proc: less LOCK operations during lookup
PATCH 1/1 proc: less LOCK operations during lookup
Pseudo-code for lookup effectively is:
LOCK kernel
LOCK proc_subdir_lock
find PDE
UNLOCK proc_subdir_lock
get inode
LOCK proc_subdir_lock
goto unlock
UNLOCK proc_subdir_lock
UNLOCK kernel
We can get rid of LOCK/UNLOCK pair after getting inode simply by jumping to unlock_kernel() directly.
Signed-off-by Alexey Dobriyan <[email protected]>
---
fs/proc/generic.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
fs/proc/generic.c +2 -2
@@ -403,12 +403,12 @@ struct dentry *proc_lookup(struct inode * dir, struct dentry *dentry, struct namspin_unlock (&proc_subdir_lock); error = -EINVAL ; inode =proc_get_inode (dir->i_sb, ino, de); -spin_lock (&proc_subdir_lock); -break ; + goto out_unlock; } } }spin_unlock (&proc_subdir_lock); +out_unlock:unlock_kernel ();if (inode) {