re-submit [PATCH 001/001] USB: serial: sierra driver indat_callback fix

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Subject: [PATCH 001/001] USB: serial: sierra driver indat_callback fix
From: Elina Pasheva <epasheva@xxxxxxxxxxxxxxxxxx>

A crash has been reported with sierra driver on disconnect with
Ubuntu/Lucid distribution based on kernel-2.6.32.
The cause of the crash was determined as "NULL tty pointer 
was being referenced" and the NULL pointer was passed by
sierra_indat_callback().
This patch modifies sierra_indat_callback() function to check 
for NULL tty structure pointer. This modification prevents 
a crash from happening when the device is disconnected.
This patch fixes the bug reported in Launchpad: 
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/511157
Signed-off-by: Elina Pasheva <epasheva@xxxxxxxxxxxxxxxxxx>


--- a/drivers/usb/serial/sierra.c       2010-01-28 15:26:09.000000000 -0800
+++ b/drivers/usb/serial/sierra.c       2010-01-28 15:28:15.000000000 -0800
@@ -603,14 +603,17 @@ static void sierra_indat_callback(struct
	} else {
		if (urb->actual_length) {
			tty = tty_port_tty_get(&port->port);
-
			tty_buffer_request_room(tty, urb->actual_length);
-			tty_insert_flip_string(tty, data, urb->actual_length);
-			tty_flip_buffer_push(tty);
-
-			tty_kref_put(tty);
-			usb_serial_debug_data(debug, &port->dev, __func__,
-				urb->actual_length, data);
+			if (tty) {
+				tty_buffer_request_room(tty,
+					urb->actual_length);
+				tty_insert_flip_string(tty, data,
+					urb->actual_length);
+				tty_flip_buffer_push(tty);
+
+				tty_kref_put(tty);
+				usb_serial_debug_data(debug, &port->dev,
+					__func__, urb->actual_length, data);
+			}
		} else {
			dev_dbg(&port->dev, "%s: empty read urb"
				" received\n", __func__);


--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux