lkml.org 
[lkml]   [2009]   [Oct]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[089/136] tty: USB hangup is racy
    2.6.31-stable review patch.  If anyone has any objections, please let us know.

    ------------------
    From: Alan Cox <alan@linux.intel.com>

    commit d2b391822a11302add9e46476f3da4e18e6de84c upstream.

    The USB layer uses tty_hangup to deal with unplugs of the physical hardware
    (analogous to loss of carrier) and then frees the resources. However the
    tty_hangup is asynchronous. As the hangup can sleep we can use tty_vhangup
    which is the non async version to avoid freeing resources too early.

    Signed-off-by: Alan Cox <alan@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/usb/serial/usb-serial.c | 5 +----
    1 file changed, 1 insertion(+), 4 deletions(-)

    --- a/drivers/usb/serial/usb-serial.c
    +++ b/drivers/usb/serial/usb-serial.c
    @@ -1161,10 +1161,7 @@ void usb_serial_disconnect(struct usb_in
    if (port) {
    struct tty_struct *tty = tty_port_tty_get(&port->port);
    if (tty) {
    - /* The hangup will occur asynchronously but
    - the object refcounts will sort out all the
    - cleanup */
    - tty_hangup(tty);
    + tty_vhangup(tty);
    tty_kref_put(tty);
    }
    kill_traffic(port);



    \
     
     \ /
      Last update: 2009-10-02 04:15    [W:0.020 / U:121.288 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site