patch "staging/speakup: Use tty_ldisc_ref() for paste kworker" added to tty-next
Subsystems (2)
This is a note to let you know that I've just added the patch titled
staging/speakup: Use tty_ldisc_ref() for paste kworker
to my tty git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git
in the tty-next branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will also be merged in the next major kernel release during the merge window.
If you have any questions about this process, please let me know.
Quoted 1 line
From
f4f9edcf9b5289ed96113e79fa65a7bf27ecb096Mon Sep 17 00:00:00 2001
From: Peter Hurley <[email protected]>
Date: Sun, 10 Jan 2016 22:40:58 -0800
Subject: staging/speakup: Use tty_ldisc_ref() for paste kworker
As the function documentation for tty_ldisc_ref_wait() notes, it is only callable from a tty file_operations routine; otherwise there is no guarantee the ref won't be NULL.
The key difference with the VT's paste_selection() is that is an ioctl, where __speakup_paste_selection() is completely async kworker, kicked off from interrupt context.
tty (ab)usage to match vt")
--- drivers/staging/speakup/selection.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/staging/speakup/selection.c +4 -1
@@ -142,7 +142,9 @@ static void __speakup_paste_selection(struct work_struct *work)struct tty_ldisc *ld;DECLARE_WAITQUEUE (wait, current); - ld =tty_ldisc_ref_wait (tty); + ld =tty_ldisc_ref (tty); +if (!ld) + goto tty_unref;tty_buffer_lock_exclusive (&vc->port);add_wait_queue (&vc->paste_wait, &wait);
@@ -162,6 +164,7 @@ static void __speakup_paste_selection(struct work_struct *work)tty_buffer_unlock_exclusive (&vc->port);tty_ldisc_deref (ld); +tty_unref:tty_kref_put (tty); }
Signature · 1 line
2.7.0