diff options
| -rw-r--r-- | drivers/staging/speakup/selection.c | 5 |
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); |
| 167 | tty_unref: | ||
| 165 | tty_kref_put(tty); | 168 | tty_kref_put(tty); |
| 166 | } | 169 | } |
| 167 | 170 | ||
