diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2007-02-12 03:53:00 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-12 12:48:32 -0500 |
commit | ab521dc0f8e117fd808d3e425216864d60390500 (patch) | |
tree | f9d6449c4d8c9508fd43edfe845108043e1536b2 /kernel | |
parent | 3e7cd6c413c9e6fbb5e1ee2acdadb4ababd2d474 (diff) |
[PATCH] tty: update the tty layer to work with struct pid
Of kernel subsystems that work with pids the tty layer is probably the largest
consumer. But it has the nice virtue that the assiation with a session only
lasts until the session leader exits. Which means that no reference counting
is required. So using struct pid winds up being a simple optimization to
avoid hash table lookups.
In the long term the use of pid_nr also ensures that when we have multiple pid
spaces mixed everything will work correctly.
Signed-off-by: Eric W. Biederman <eric@maxwell.lnxi.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/fork.c | 2 | ||||
-rw-r--r-- | kernel/sys.c | 1 |
2 files changed, 1 insertions, 2 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 80284eb488ce..0b6293d94d96 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -869,7 +869,7 @@ static inline int copy_signal(unsigned long clone_flags, struct task_struct * ts | |||
869 | sig->it_prof_incr = cputime_zero; | 869 | sig->it_prof_incr = cputime_zero; |
870 | 870 | ||
871 | sig->leader = 0; /* session leadership doesn't inherit */ | 871 | sig->leader = 0; /* session leadership doesn't inherit */ |
872 | sig->tty_old_pgrp = 0; | 872 | sig->tty_old_pgrp = NULL; |
873 | 873 | ||
874 | sig->utime = sig->stime = sig->cutime = sig->cstime = cputime_zero; | 874 | sig->utime = sig->stime = sig->cutime = sig->cstime = cputime_zero; |
875 | sig->nvcsw = sig->nivcsw = sig->cnvcsw = sig->cnivcsw = 0; | 875 | sig->nvcsw = sig->nivcsw = sig->cnvcsw = sig->cnivcsw = 0; |
diff --git a/kernel/sys.c b/kernel/sys.c index e1024383314d..efcf76e0dada 100644 --- a/kernel/sys.c +++ b/kernel/sys.c | |||
@@ -1510,7 +1510,6 @@ asmlinkage long sys_setsid(void) | |||
1510 | 1510 | ||
1511 | spin_lock(&group_leader->sighand->siglock); | 1511 | spin_lock(&group_leader->sighand->siglock); |
1512 | group_leader->signal->tty = NULL; | 1512 | group_leader->signal->tty = NULL; |
1513 | group_leader->signal->tty_old_pgrp = 0; | ||
1514 | spin_unlock(&group_leader->sighand->siglock); | 1513 | spin_unlock(&group_leader->sighand->siglock); |
1515 | 1514 | ||
1516 | err = process_group(group_leader); | 1515 | err = process_group(group_leader); |