forked from luck/tmp_suning_uos_patched
[PATCH] tty: Fix two reported pid leaks
These leaks were reported by: Catalin Marinas <catalin.marians@gmail.com> and I have been able to very by inspection they are possible. When converting tty_io.c to store pids as struct pid pointers instead of pid_t values it appears I overlooked two places where we stop using the pid value. The very obvious one is in do_tty_hangup, and the one the less obvious one in __proc_set_tty. When looking into the code __proc_set_tty only has pids that need to be put because of failures of other parts of the code to properly perform hangup processing. Fixing the leak here in __proc_set_tty is easy and obviously correct so I am doing that first. Fixing the places that should be performing hangup processing is much less obviously correct. So those I'm aiming those patches at -mm. for now, so the can age a while before they are merged. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
aeb3f6d10e
commit
d9c1e9a8ff
|
@ -1376,6 +1376,8 @@ static void do_tty_hangup(struct work_struct *work)
|
||||||
read_unlock(&tasklist_lock);
|
read_unlock(&tasklist_lock);
|
||||||
|
|
||||||
tty->flags = 0;
|
tty->flags = 0;
|
||||||
|
put_pid(tty->session);
|
||||||
|
put_pid(tty->pgrp);
|
||||||
tty->session = NULL;
|
tty->session = NULL;
|
||||||
tty->pgrp = NULL;
|
tty->pgrp = NULL;
|
||||||
tty->ctrl_status = 0;
|
tty->ctrl_status = 0;
|
||||||
|
@ -3841,6 +3843,9 @@ static struct pid *__proc_set_tty(struct task_struct *tsk, struct tty_struct *tt
|
||||||
{
|
{
|
||||||
struct pid *old_pgrp;
|
struct pid *old_pgrp;
|
||||||
if (tty) {
|
if (tty) {
|
||||||
|
/* We should not have a session or pgrp to here but.... */
|
||||||
|
put_pid(tty->session);
|
||||||
|
put_pid(tty->pgrp);
|
||||||
tty->session = get_pid(task_session(tsk));
|
tty->session = get_pid(task_session(tsk));
|
||||||
tty->pgrp = get_pid(task_pgrp(tsk));
|
tty->pgrp = get_pid(task_pgrp(tsk));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user