diff options
Diffstat (limited to 'drivers/usb/serial/usb_wwan.c')
-rw-r--r-- | drivers/usb/serial/usb_wwan.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/drivers/usb/serial/usb_wwan.c b/drivers/usb/serial/usb_wwan.c index 01c94aada56c..a547c91e3c05 100644 --- a/drivers/usb/serial/usb_wwan.c +++ b/drivers/usb/serial/usb_wwan.c | |||
@@ -275,7 +275,6 @@ static void usb_wwan_indat_callback(struct urb *urb) | |||
275 | int err; | 275 | int err; |
276 | int endpoint; | 276 | int endpoint; |
277 | struct usb_serial_port *port; | 277 | struct usb_serial_port *port; |
278 | struct tty_struct *tty; | ||
279 | struct device *dev; | 278 | struct device *dev; |
280 | unsigned char *data = urb->transfer_buffer; | 279 | unsigned char *data = urb->transfer_buffer; |
281 | int status = urb->status; | 280 | int status = urb->status; |
@@ -288,16 +287,12 @@ static void usb_wwan_indat_callback(struct urb *urb) | |||
288 | dev_dbg(dev, "%s: nonzero status: %d on endpoint %02x.\n", | 287 | dev_dbg(dev, "%s: nonzero status: %d on endpoint %02x.\n", |
289 | __func__, status, endpoint); | 288 | __func__, status, endpoint); |
290 | } else { | 289 | } else { |
291 | tty = tty_port_tty_get(&port->port); | 290 | if (urb->actual_length) { |
292 | if (tty) { | 291 | tty_insert_flip_string(&port->port, data, |
293 | if (urb->actual_length) { | 292 | urb->actual_length); |
294 | tty_insert_flip_string(tty, data, | 293 | tty_flip_buffer_push(&port->port); |
295 | urb->actual_length); | 294 | } else |
296 | tty_flip_buffer_push(tty); | 295 | dev_dbg(dev, "%s: empty read urb received\n", __func__); |
297 | } else | ||
298 | dev_dbg(dev, "%s: empty read urb received\n", __func__); | ||
299 | tty_kref_put(tty); | ||
300 | } | ||
301 | 296 | ||
302 | /* Resubmit urb so we continue receiving */ | 297 | /* Resubmit urb so we continue receiving */ |
303 | err = usb_submit_urb(urb, GFP_ATOMIC); | 298 | err = usb_submit_urb(urb, GFP_ATOMIC); |