summary refs log tree commit diff
path: root/drivers/input/serio
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2016-10-03 16:42:21 -0700
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2016-10-03 16:42:21 -0700
commitc758f96a8c346ac5a6822b521ec92308c5774381 (patch)
tree377b72d74ee58b3e1eeb0528d0618e38645aaafc /drivers/input/serio
parent9fb6de1b0bf4ec11573b76059da3c3b39ac7f2ff (diff)
parent265d426d7470d53e900379960eef5b4482125089 (diff)
downloadlinux-c758f96a8c346ac5a6822b521ec92308c5774381.tar.gz
Merge branch 'next' into for-linus
Prepare first round of input updates for 4.9 merge window.
Diffstat (limited to 'drivers/input/serio')
-rw-r--r--drivers/input/serio/serport.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/drivers/input/serio/serport.c b/drivers/input/serio/serport.c
index 9c927d35c1f5..d189843f3727 100644
--- a/drivers/input/serio/serport.c
+++ b/drivers/input/serio/serport.c
@@ -71,10 +71,7 @@ static void serport_serio_close(struct serio *serio)
 
 	spin_lock_irqsave(&serport->lock, flags);
 	clear_bit(SERPORT_ACTIVE, &serport->flags);
-	set_bit(SERPORT_DEAD, &serport->flags);
 	spin_unlock_irqrestore(&serport->lock, flags);
-
-	wake_up_interruptible(&serport->wait);
 }
 
 /*
@@ -248,6 +245,19 @@ static long serport_ldisc_compat_ioctl(struct tty_struct *tty,
 }
 #endif
 
+static int serport_ldisc_hangup(struct tty_struct *tty)
+{
+	struct serport *serport = (struct serport *) tty->disc_data;
+	unsigned long flags;
+
+	spin_lock_irqsave(&serport->lock, flags);
+	set_bit(SERPORT_DEAD, &serport->flags);
+	spin_unlock_irqrestore(&serport->lock, flags);
+
+	wake_up_interruptible(&serport->wait);
+	return 0;
+}
+
 static void serport_ldisc_write_wakeup(struct tty_struct * tty)
 {
 	struct serport *serport = (struct serport *) tty->disc_data;
@@ -274,6 +284,7 @@ static struct tty_ldisc_ops serport_ldisc = {
 	.compat_ioctl =	serport_ldisc_compat_ioctl,
 #endif
 	.receive_buf =	serport_ldisc_receive,
+	.hangup =	serport_ldisc_hangup,
 	.write_wakeup =	serport_ldisc_write_wakeup
 };