Skip to content

Commit

Permalink
tty: Fix abusers of current->sighand->tty
Browse files Browse the repository at this point in the history
Various people outside the tty layer still stick their noses in behind the
scenes. We need to make sure they also obey the locking and referencing rules.

Signed-off-by: Alan Cox <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Alan Cox authored and torvalds committed Oct 13, 2008
1 parent 934e6eb commit dbda4c0
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 6 deletions.
2 changes: 1 addition & 1 deletion kernel/acct.c
Original file line number Diff line number Diff line change
Expand Up @@ -548,7 +548,7 @@ static void do_acct_process(struct bsd_acct_struct *acct,
#endif

spin_lock_irq(&current->sighand->siglock);
tty = current->signal->tty;
tty = current->signal->tty; /* Safe as we hold the siglock */
ac.ac_tty = tty ? old_encode_dev(tty_devnum(tty)) : 0;
ac.ac_utime = encode_comp_t(jiffies_to_AHZ(cputime_to_jiffies(pacct->ac_utime)));
ac.ac_stime = encode_comp_t(jiffies_to_AHZ(cputime_to_jiffies(pacct->ac_stime)));
Expand Down
9 changes: 4 additions & 5 deletions kernel/auditsc.c
Original file line number Diff line number Diff line change
Expand Up @@ -246,8 +246,8 @@ static int audit_match_perm(struct audit_context *ctx, int mask)
unsigned n;
if (unlikely(!ctx))
return 0;

n = ctx->major;

switch (audit_classify_syscall(ctx->arch, n)) {
case 0: /* native */
if ((mask & AUDIT_PERM_WRITE) &&
Expand Down Expand Up @@ -1204,13 +1204,13 @@ static void audit_log_exit(struct audit_context *context, struct task_struct *ts
(context->return_valid==AUDITSC_SUCCESS)?"yes":"no",
context->return_code);

mutex_lock(&tty_mutex);
read_lock(&tasklist_lock);
spin_lock_irq(&tsk->sighand->siglock);
if (tsk->signal && tsk->signal->tty && tsk->signal->tty->name)
tty = tsk->signal->tty->name;
else
tty = "(none)";
read_unlock(&tasklist_lock);
spin_unlock_irq(&tsk->sighand->siglock);

audit_log_format(ab,
" a0=%lx a1=%lx a2=%lx a3=%lx items=%d"
" ppid=%d pid=%d auid=%u uid=%u gid=%u"
Expand All @@ -1230,7 +1230,6 @@ static void audit_log_exit(struct audit_context *context, struct task_struct *ts
context->egid, context->sgid, context->fsgid, tty,
tsk->sessionid);

mutex_unlock(&tty_mutex);

audit_log_task_info(ab, tsk);
if (context->filterkey) {
Expand Down

0 comments on commit dbda4c0

Please sign in to comment.