提交 6698e347 编写于 作者: A Alan Cox 提交者: Linus Torvalds

tty: Fix BKL taken under a spinlock bug introduced in the BKL split

The fasync path takes the BKL (it probably doesn't need to in fact)
while holding the file_list spinlock.  You can't do that with the kernel
lock: it causes lock inversions and deadlocks.

Leave the BKL over that bit for the moment.

Identified by AKPM.
Signed-off-by: NAlan Cox <alan@linux.intel.com>
Acked-and-Tested-by: NThomas Gleixner <tglx@linutronix.de>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 09cea96c
......@@ -516,7 +516,6 @@ static void do_tty_hangup(struct work_struct *work)
/* inuse_filps is protected by the single kernel lock */
lock_kernel();
check_tty_count(tty, "do_tty_hangup");
unlock_kernel();
file_list_lock();
/* This breaks for file handles being sent over AF_UNIX sockets ? */
......@@ -531,7 +530,6 @@ static void do_tty_hangup(struct work_struct *work)
}
file_list_unlock();
lock_kernel();
tty_ldisc_hangup(tty);
read_lock(&tasklist_lock);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册