Skip to content

Commit

Permalink
tty: Fix BKL taken under a spinlock bug introduced in the BKL split
Browse files Browse the repository at this point in the history
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: Alan Cox <[email protected]>
Acked-and-Tested-by: Thomas Gleixner <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Alan Cox authored and torvalds committed Dec 12, 2009
1 parent 09cea96 commit 6698e34
Showing 1 changed file with 0 additions and 2 deletions.
2 changes: 0 additions & 2 deletions drivers/char/tty_io.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 ? */
Expand All @@ -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);
Expand Down

0 comments on commit 6698e34

Please sign in to comment.