From 44fb2121585c8fc7d8a78a09d871a14b1e0be470 Mon Sep 17 00:00:00 2001 From: Johan Hovold Date: Mon, 14 Jan 2013 16:52:56 +0100 Subject: [PATCH] --- yaml --- r: 354569 b: refs/heads/master c: 810360a03597afc0d43a45798a52cfb69b8453d3 h: refs/heads/master i: 354567: cc0e8fdd1df89901b790e59581d777acdcdbef2d v: v3 --- [refs] | 2 +- trunk/drivers/usb/serial/usb-serial.c | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index e19b0d475a60..4b5f7dd76bde 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fcdb6a21903bcab0b5f788ba7eb0c31dd06040fd +refs/heads/master: 810360a03597afc0d43a45798a52cfb69b8453d3 diff --git a/trunk/drivers/usb/serial/usb-serial.c b/trunk/drivers/usb/serial/usb-serial.c index 64bda135ba7e..0a17f5942552 100644 --- a/trunk/drivers/usb/serial/usb-serial.c +++ b/trunk/drivers/usb/serial/usb-serial.c @@ -361,15 +361,21 @@ static int serial_write_room(struct tty_struct *tty) static int serial_chars_in_buffer(struct tty_struct *tty) { struct usb_serial_port *port = tty->driver_data; + struct usb_serial *serial = port->serial; + int count = 0; dev_dbg(tty->dev, "%s - port %d\n", __func__, port->number); + mutex_lock(&serial->disc_mutex); /* if the device was unplugged then any remaining characters fell out of the connector ;) */ - if (port->serial->disconnected) - return 0; - /* pass on to the driver specific version of this function */ - return port->serial->type->chars_in_buffer(tty); + if (serial->disconnected) + count = 0; + else + count = serial->type->chars_in_buffer(tty); + mutex_unlock(&serial->disc_mutex); + + return count; } static void serial_throttle(struct tty_struct *tty)