diff options
| author | Jeff Garzik <jeff@garzik.org> | 2006-04-20 18:36:05 -0400 |
|---|---|---|
| committer | Jeff Garzik <jeff@garzik.org> | 2006-04-20 18:36:05 -0400 |
| commit | 857c68f733eea07f11a061caea43a38fed61adb7 (patch) | |
| tree | 4567a9e91f717b22143ac1ccb0fb5323ac15afd3 /drivers/char/tty_io.c | |
| parent | 4741c336d27dec3ea68a35659abb8dc82b142388 (diff) | |
| parent | 402a26f0c040077ed6f941eefac5a6971f0d5f40 (diff) | |
Merge branch 'master'
Diffstat (limited to 'drivers/char/tty_io.c')
| -rw-r--r-- | drivers/char/tty_io.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c index 841f0bd3eaaf..f07637a8f88f 100644 --- a/drivers/char/tty_io.c +++ b/drivers/char/tty_io.c | |||
| @@ -2723,7 +2723,11 @@ static void __do_SAK(void *arg) | |||
| 2723 | } | 2723 | } |
| 2724 | task_lock(p); | 2724 | task_lock(p); |
| 2725 | if (p->files) { | 2725 | if (p->files) { |
| 2726 | rcu_read_lock(); | 2726 | /* |
| 2727 | * We don't take a ref to the file, so we must | ||
| 2728 | * hold ->file_lock instead. | ||
| 2729 | */ | ||
| 2730 | spin_lock(&p->files->file_lock); | ||
| 2727 | fdt = files_fdtable(p->files); | 2731 | fdt = files_fdtable(p->files); |
| 2728 | for (i=0; i < fdt->max_fds; i++) { | 2732 | for (i=0; i < fdt->max_fds; i++) { |
| 2729 | filp = fcheck_files(p->files, i); | 2733 | filp = fcheck_files(p->files, i); |
| @@ -2738,7 +2742,7 @@ static void __do_SAK(void *arg) | |||
| 2738 | break; | 2742 | break; |
| 2739 | } | 2743 | } |
| 2740 | } | 2744 | } |
| 2741 | rcu_read_unlock(); | 2745 | spin_unlock(&p->files->file_lock); |
| 2742 | } | 2746 | } |
| 2743 | task_unlock(p); | 2747 | task_unlock(p); |
| 2744 | } while_each_thread(g, p); | 2748 | } while_each_thread(g, p); |
