summaryrefslogtreecommitdiffstats
path: root/drivers/char/viotape.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2009-12-09 15:19:31 +0100
committerAl Viro <viro@zeniv.linux.org.uk>2010-10-30 14:45:25 +0200
commit3c80fe4ac9cfb13b1bfa4edf1544e8b656716694 (patch)
treec605435b642323cd76eea9567a43d8c67b9c9db1 /drivers/char/viotape.c
parentin untag_chunk() we need to do alloc_chunk() a bit earlier (diff)
downloadlinux-3c80fe4ac9cfb13b1bfa4edf1544e8b656716694.tar.xz
linux-3c80fe4ac9cfb13b1bfa4edf1544e8b656716694.zip
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>
Diffstat (limited to '')
0 files changed, 0 insertions, 0 deletions