Thomas Gleixner 3c80fe4ac9 audit: Call tty_audit_push_task() outside preempt disabled
While auditing all tasklist_lock read_lock sites I stumbled over the
following call chain:

audit_prepare_user_tty()
  read_lock(&tasklist_lock);
  tty_audit_push_task();
     mutex_lock(&buf->mutex);

     --> buf->mutex is locked with preemption disabled.

Solve this by acquiring a reference to the task struct under
rcu_read_lock and call tty_audit_push_task outside of the preempt
disabled region.

Move all code which needs to be protected by sighand lock into
tty_audit_push_task() and use lock/unlock_sighand as we do not hold
tasklist_lock.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Eric Paris <eparis@redhat.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2010-10-30 08:45:25 -04:00
..
2010-10-15 15:53:27 +02:00
2010-08-10 13:47:40 -07:00
2010-10-14 14:48:12 -04:00
2010-08-10 13:47:40 -07:00
2010-10-22 10:20:02 -07:00
2010-10-22 10:20:02 -07:00
2010-10-15 15:53:27 +02:00
2010-10-15 15:53:27 +02:00
2010-08-10 13:47:43 -07:00
2010-08-10 13:47:39 -07:00
2010-10-15 15:53:27 +02:00
2010-08-10 13:47:40 -07:00
2010-08-10 13:47:44 -07:00
2010-10-15 15:53:27 +02:00
2010-10-15 15:53:27 +02:00
2010-10-22 10:20:04 -07:00
2010-08-10 13:47:44 -07:00
2010-10-22 10:20:02 -07:00