aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/tty/serial/kgdb_nmi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/tty/serial/kgdb_nmi.c')
-rw-r--r--drivers/tty/serial/kgdb_nmi.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/drivers/tty/serial/kgdb_nmi.c b/drivers/tty/serial/kgdb_nmi.c
index 6ac2b797a764..5dafcf1c227b 100644
--- a/drivers/tty/serial/kgdb_nmi.c
+++ b/drivers/tty/serial/kgdb_nmi.c
@@ -23,6 +23,7 @@
23#include <linux/tty.h> 23#include <linux/tty.h>
24#include <linux/tty_driver.h> 24#include <linux/tty_driver.h>
25#include <linux/tty_flip.h> 25#include <linux/tty_flip.h>
26#include <linux/serial_core.h>
26#include <linux/interrupt.h> 27#include <linux/interrupt.h>
27#include <linux/hrtimer.h> 28#include <linux/hrtimer.h>
28#include <linux/tick.h> 29#include <linux/tick.h>
@@ -202,7 +203,6 @@ bool kgdb_nmi_poll_knock(void)
202static void kgdb_nmi_tty_receiver(unsigned long data) 203static void kgdb_nmi_tty_receiver(unsigned long data)
203{ 204{
204 struct kgdb_nmi_tty_priv *priv = (void *)data; 205 struct kgdb_nmi_tty_priv *priv = (void *)data;
205 struct tty_struct *tty;
206 char ch; 206 char ch;
207 207
208 tasklet_schedule(&priv->tlet); 208 tasklet_schedule(&priv->tlet);
@@ -210,16 +210,9 @@ static void kgdb_nmi_tty_receiver(unsigned long data)
210 if (likely(!kgdb_nmi_tty_enabled || !kfifo_len(&priv->fifo))) 210 if (likely(!kgdb_nmi_tty_enabled || !kfifo_len(&priv->fifo)))
211 return; 211 return;
212 212
213 /* Port is there, but tty might be hung up, check. */
214 tty = tty_port_tty_get(kgdb_nmi_port);
215 if (!tty)
216 return;
217
218 while (kfifo_out(&priv->fifo, &ch, 1)) 213 while (kfifo_out(&priv->fifo, &ch, 1))
219 tty_insert_flip_char(priv->port.tty, ch, TTY_NORMAL); 214 tty_insert_flip_char(&priv->port, ch, TTY_NORMAL);
220 tty_flip_buffer_push(priv->port.tty); 215 tty_flip_buffer_push(&priv->port);
221
222 tty_kref_put(tty);
223} 216}
224 217
225static int kgdb_nmi_tty_activate(struct tty_port *port, struct tty_struct *tty) 218static int kgdb_nmi_tty_activate(struct tty_port *port, struct tty_struct *tty)