aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char
diff options
context:
space:
mode:
authorDipankar Sarma <dipankar@in.ibm.com>2005-09-09 16:04:14 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-09-09 16:57:55 -0400
commitb835996f628eadb55c5fb222ba46fe9395bf73c7 (patch)
treed63d80585d197e1ffc299af4a0034049790fb197 /drivers/char
parentab2af1f5005069321c5d130f09cce577b03f43ef (diff)
[PATCH] files: lock-free fd look-up
With the use of RCU in files structure, the look-up of files using fds can now be lock-free. The lookup is protected by rcu_read_lock()/rcu_read_unlock(). This patch changes the readers to use lock-free lookup. Signed-off-by: Maneesh Soni <maneesh@in.ibm.com> Signed-off-by: Ravikiran Thirumalai <kiran_th@gmail.com> Signed-off-by: Dipankar Sarma <dipankar@in.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/char')
-rw-r--r--drivers/char/tty_io.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c
index 0bfc7af68917..e5953f3433f3 100644
--- a/drivers/char/tty_io.c
+++ b/drivers/char/tty_io.c
@@ -2480,7 +2480,7 @@ static void __do_SAK(void *arg)
2480 } 2480 }
2481 task_lock(p); 2481 task_lock(p);
2482 if (p->files) { 2482 if (p->files) {
2483 spin_lock(&p->files->file_lock); 2483 rcu_read_lock();
2484 fdt = files_fdtable(p->files); 2484 fdt = files_fdtable(p->files);
2485 for (i=0; i < fdt->max_fds; i++) { 2485 for (i=0; i < fdt->max_fds; i++) {
2486 filp = fcheck_files(p->files, i); 2486 filp = fcheck_files(p->files, i);
@@ -2495,7 +2495,7 @@ static void __do_SAK(void *arg)
2495 break; 2495 break;
2496 } 2496 }
2497 } 2497 }
2498 spin_unlock(&p->files->file_lock); 2498 rcu_read_unlock();
2499 } 2499 }
2500 task_unlock(p); 2500 task_unlock(p);
2501 } while_each_task_pid(session, PIDTYPE_SID, p); 2501 } while_each_task_pid(session, PIDTYPE_SID, p);