Patch "tty: Drop krefs for interrupted tty lock" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
tty: Drop krefs for interrupted tty lock
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
tty-drop-krefs-for-interrupted-tty-lock.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
e9036d0662360cd4c79578565ce422ed5872f301Mon Sep 17 00:00:00 2001
From: Peter Hurley <[email protected]>
Date: Fri, 5 Feb 2016 10:49:36 -0800
Subject: tty: Drop krefs for interrupted tty lock
From: Peter Hurley <[email protected]>
commit e9036d0662360cd4c79578565ce422ed5872f301 upstream.
When the tty lock is interrupted on attempted re-open, 2 tty krefs are still held. Drop extra kref before returning failure from tty_lock_interruptible(), and drop lookup kref before returning failure from tty_open().
--- drivers/tty/tty_io.c | 3 +-- drivers/tty/tty_mutex.c | 7 ++++++- 2 files changed, 7 insertions(+), 3 deletions(-)
drivers/tty/tty_io.c +1 -2
@@ -2070,13 +2070,12 @@ retry_open:if (tty) {mutex_unlock (&tty_mutex); retval =tty_lock_interruptible (tty); +tty_kref_put (tty);/* drop kref from tty_driver_lookup_tty() */ if (retval) {if (retval == -EINTR ) retval = -ERESTARTSYS ; goto err_unref; } -/* safe to drop the kref from tty_driver_lookup_tty() */ -tty_kref_put (tty); retval =tty_reopen (tty);if (retval <0 ) {tty_unlock (tty);
drivers/tty/tty_mutex.c +6 -1
@@ -24,10 +24,15 @@ EXPORT_SYMBOL(tty_lock);int tty_lock_interruptible (struct tty_struct *tty) { +int ret; +if (WARN (tty->magic !=TTY_MAGIC ,"L Bad %p\n" , tty))return -EIO ;tty_kref_get (tty); -return mutex_lock_interruptible (&tty->legacy_mutex); + ret =mutex_lock_interruptible (&tty->legacy_mutex); +if (ret) +tty_kref_put (tty); +return ret; } void __lockfunc tty_unlock(struct tty_struct *tty)
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/tty-drop-krefs-for-interrupted-tty-lock.patch