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 1355a6cd4508..571965aa1cc0 100644 --- a/drivers/usb/serial/usb_wwan.c +++ b/drivers/usb/serial/usb_wwan.c | |||
@@ -273,7 +273,6 @@ static void usb_wwan_indat_callback(struct urb *urb) | |||
273 | int err; | 273 | int err; |
274 | int endpoint; | 274 | int endpoint; |
275 | struct usb_serial_port *port; | 275 | struct usb_serial_port *port; |
276 | struct tty_struct *tty; | ||
277 | struct device *dev; | 276 | struct device *dev; |
278 | unsigned char *data = urb->transfer_buffer; | 277 | unsigned char *data = urb->transfer_buffer; |
279 | int status = urb->status; | 278 | int status = urb->status; |
@@ -286,16 +285,12 @@ static void usb_wwan_indat_callback(struct urb *urb) | |||
286 | dev_dbg(dev, "%s: nonzero status: %d on endpoint %02x.\n", | 285 | dev_dbg(dev, "%s: nonzero status: %d on endpoint %02x.\n", |
287 | __func__, status, endpoint); | 286 | __func__, status, endpoint); |
288 | } else { | 287 | } else { |
289 | tty = tty_port_tty_get(&port->port); | 288 | if (urb->actual_length) { |
290 | if (tty) { | 289 | tty_insert_flip_string(&port->port, data, |
291 | if (urb->actual_length) { | 290 | urb->actual_length); |
292 | tty_insert_flip_string(tty, data, | 291 | tty_flip_buffer_push(&port->port); |
293 | urb->actual_length); | 292 | } else |
294 | tty_flip_buffer_push(tty); | 293 | dev_dbg(dev, "%s: empty read urb received\n", __func__); |
295 | } else | ||
296 | dev_dbg(dev, "%s: empty read urb received\n", __func__); | ||
297 | tty_kref_put(tty); | ||
298 | } | ||
299 | 294 | ||
300 | /* Resubmit urb so we continue receiving */ | 295 | /* Resubmit urb so we continue receiving */ |
301 | err = usb_submit_urb(urb, GFP_ATOMIC); | 296 | err = usb_submit_urb(urb, GFP_ATOMIC); |