mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 21:54:34 -04:00
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>
This commit is contained in:
parent
f7a998a949
commit
3c80fe4ac9
3 changed files with 42 additions and 30 deletions
|
|
@ -541,8 +541,8 @@ extern void tty_audit_exit(void);
|
|||
extern void tty_audit_fork(struct signal_struct *sig);
|
||||
extern void tty_audit_tiocsti(struct tty_struct *tty, char ch);
|
||||
extern void tty_audit_push(struct tty_struct *tty);
|
||||
extern void tty_audit_push_task(struct task_struct *tsk,
|
||||
uid_t loginuid, u32 sessionid);
|
||||
extern int tty_audit_push_task(struct task_struct *tsk,
|
||||
uid_t loginuid, u32 sessionid);
|
||||
#else
|
||||
static inline void tty_audit_add_data(struct tty_struct *tty,
|
||||
unsigned char *data, size_t size)
|
||||
|
|
@ -560,9 +560,10 @@ static inline void tty_audit_fork(struct signal_struct *sig)
|
|||
static inline void tty_audit_push(struct tty_struct *tty)
|
||||
{
|
||||
}
|
||||
static inline void tty_audit_push_task(struct task_struct *tsk,
|
||||
uid_t loginuid, u32 sessionid)
|
||||
static inline int tty_audit_push_task(struct task_struct *tsk,
|
||||
uid_t loginuid, u32 sessionid)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue