lkml.org 
[lkml]   [2016]   [Feb]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.12 080/142] staging/speakup: Use tty_ldisc_ref() for paste kworker
    Date
    From: Peter Hurley <peter@hurleysoftware.com>

    3.12-stable review patch. If anyone has any objections, please let me know.

    ===============

    commit f4f9edcf9b5289ed96113e79fa65a7bf27ecb096 upstream.

    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.

    Fixes: 28a821c30688 ("Staging: speakup: Update __speakup_paste_selection()
    tty (ab)usage to match vt")
    Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    ---
    drivers/staging/speakup/selection.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    diff --git a/drivers/staging/speakup/selection.c b/drivers/staging/speakup/selection.c
    index ca04d3669acc..34a6deef1d6c 100644
    --- a/drivers/staging/speakup/selection.c
    +++ b/drivers/staging/speakup/selection.c
    @@ -140,7 +140,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);
    @@ -160,6 +162,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);
    }

    --
    2.7.1
    \
     
     \ /
      Last update: 2016-02-24 12:21    [W:2.525 / U:0.384 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site