Commit 10be509c authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] procfs: remove some unneeded lock_kernel()s

From: William Lee Irwin III <wli@holomorphy.com>

Remove spurious BKL acquisitions in /proc/.  The BKL is not required to
access nr_threads for reporting, and get_locks_status() takes it
internally, wrapping all operations with it.
parent 1fe128d2
...@@ -497,11 +497,10 @@ static int ds1286_read_proc(char *page, char **start, off_t off, ...@@ -497,11 +497,10 @@ static int ds1286_read_proc(char *page, char **start, off_t off,
static int locks_read_proc(char *page, char **start, off_t off, static int locks_read_proc(char *page, char **start, off_t off,
int count, int *eof, void *data) int count, int *eof, void *data)
{ {
int len; int len = get_locks_status(page, start, off, count);
lock_kernel();
len = get_locks_status(page, start, off, count); if (len < count)
unlock_kernel(); *eof = 1;
if (len < count) *eof = 1;
return len; return len;
} }
......
...@@ -81,11 +81,13 @@ void __init proc_root_init(void) ...@@ -81,11 +81,13 @@ void __init proc_root_init(void)
static struct dentry *proc_root_lookup(struct inode * dir, struct dentry * dentry) static struct dentry *proc_root_lookup(struct inode * dir, struct dentry * dentry)
{ {
if (dir->i_ino == PROC_ROOT_INO) { /* check for safety... */ /*
lock_kernel(); * nr_threads is actually protected by the tasklist_lock;
* however, it's conventional to do reads, especially for
* reporting, without any locking whatsoever.
*/
if (dir->i_ino == PROC_ROOT_INO) /* check for safety... */
dir->i_nlink = proc_root.nlink + nr_threads; dir->i_nlink = proc_root.nlink + nr_threads;
unlock_kernel();
}
if (!proc_lookup(dir, dentry)) { if (!proc_lookup(dir, dentry)) {
return NULL; return NULL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment