aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/speakup/selection.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/staging/speakup/selection.c b/drivers/staging/speakup/selection.c
index aa5ab6c80ed4..41ef099b7aa6 100644
--- a/drivers/staging/speakup/selection.c
+++ b/drivers/staging/speakup/selection.c
@@ -142,7 +142,9 @@ static void __speakup_paste_selection(struct work_struct *work)
142 struct tty_ldisc *ld; 142 struct tty_ldisc *ld;
143 DECLARE_WAITQUEUE(wait, current); 143 DECLARE_WAITQUEUE(wait, current);
144 144
145 ld = tty_ldisc_ref_wait(tty); 145 ld = tty_ldisc_ref(tty);
146 if (!ld)
147 goto tty_unref;
146 tty_buffer_lock_exclusive(&vc->port); 148 tty_buffer_lock_exclusive(&vc->port);
147 149
148 add_wait_queue(&vc->paste_wait, &wait); 150 add_wait_queue(&vc->paste_wait, &wait);
@@ -162,6 +164,7 @@ static void __speakup_paste_selection(struct work_struct *work)
162 164
163 tty_buffer_unlock_exclusive(&vc->port); 165 tty_buffer_unlock_exclusive(&vc->port);
164 tty_ldisc_deref(ld); 166 tty_ldisc_deref(ld);
167tty_unref:
165 tty_kref_put(tty); 168 tty_kref_put(tty);
166} 169}
167 170