<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/usb/serial, branch v3.2.22</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/drivers/usb/serial?h=v3.2.22</id>
<link rel='self' href='https://git.amat.us/linux/atom/drivers/usb/serial?h=v3.2.22'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2012-07-04T04:44:31Z</updated>
<entry>
<title>USB: CP210x Add 10 Device IDs</title>
<updated>2012-07-04T04:44:31Z</updated>
<author>
<name>Craig Shelley</name>
<email>craig@microtron.org.uk</email>
</author>
<published>2012-06-26T22:20:04Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=dd97160af2b4999b01284ea916e27e4eb1f0be22'/>
<id>urn:sha1:dd97160af2b4999b01284ea916e27e4eb1f0be22</id>
<content type='text'>
commit 3fcc8f96829776cf181918461923d1e3bbb831a2 upstream.

This patch adds 10 device IDs for CP210x based devices from the following manufacturers:
Timewave
Clipsal
Festo
Link Instruments

Signed-off-by: Craig Shelley &lt;craig@microtron.org.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>USB: option: Add USB ID for Novatel Ovation MC551</title>
<updated>2012-07-04T04:44:30Z</updated>
<author>
<name>Forest Bond</name>
<email>forest.bond@rapidrollout.com</email>
</author>
<published>2012-06-22T14:30:38Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=5599861db4401a9497cf1821e3b0b88109756087'/>
<id>urn:sha1:5599861db4401a9497cf1821e3b0b88109756087</id>
<content type='text'>
commit 065b07e7a14676f4138ce4619d229c0be5a74230 upstream.

This device is also known as the Verizon USB551L.

Signed-off-by: Forest Bond &lt;forest.bond@rapidrollout.com&gt;
Acked-by: Dan Williams &lt;dcbw@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>USB: option: add id for Cellient MEN-200</title>
<updated>2012-07-04T04:44:24Z</updated>
<author>
<name>Dmitry Shmygov</name>
<email>shmygov@rambler.ru</email>
</author>
<published>2012-06-20T11:51:40Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=150005159b95061c2029f5ae63ead47f4e8607c3'/>
<id>urn:sha1:150005159b95061c2029f5ae63ead47f4e8607c3</id>
<content type='text'>
commit 1e2c4e59d2b8797973471b4a287a43eac12a0f40 upstream.

Add vendor and product ID to option.c driver
for Cellient MEN-200 EVDO Rev.B 450MHz data module.
http://cellient.com

Signed-off-by: Dmitry Shmygov &lt;shmygov@rambler.ru&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>USB: serial: Enforce USB driver and USB serial driver match</title>
<updated>2012-06-19T22:18:25Z</updated>
<author>
<name>Bjørn Mork</name>
<email>bjorn@mork.no</email>
</author>
<published>2012-05-30T08:00:14Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f21c193188e8368ea07d867ad4a02596a888f2ca'/>
<id>urn:sha1:f21c193188e8368ea07d867ad4a02596a888f2ca</id>
<content type='text'>
commit 954c3f8a5f1b7716be9eee978b3bc85bae92d7c8 upstream.

We need to make sure that the USB serial driver we find
matches the USB driver whose probe we are currently
executing. Otherwise we will end up with USB serial
devices bound to the correct serial driver but wrong
USB driver.

An example of such cross-probing, where the usbserial_generic
USB driver has found the sierra serial driver:

May 29 18:26:15 nemi kernel: [ 4442.559246] usbserial_generic 4-4:1.0: Sierra USB modem converter detected
May 29 18:26:20 nemi kernel: [ 4447.556747] usbserial_generic 4-4:1.2: Sierra USB modem converter detected
May 29 18:26:25 nemi kernel: [ 4452.557288] usbserial_generic 4-4:1.3: Sierra USB modem converter detected

sysfs view of the same problem:

bjorn@nemi:~$ ls -l /sys/bus/usb/drivers/sierra/
total 0
--w------- 1 root root 4096 May 29 18:23 bind
lrwxrwxrwx 1 root root    0 May 29 18:23 module -&gt; ../../../../module/usbserial
--w------- 1 root root 4096 May 29 18:23 uevent
--w------- 1 root root 4096 May 29 18:23 unbind
bjorn@nemi:~$ ls -l /sys/bus/usb-serial/drivers/sierra/
total 0
--w------- 1 root root 4096 May 29 18:23 bind
lrwxrwxrwx 1 root root    0 May 29 18:23 module -&gt; ../../../../module/sierra
-rw-r--r-- 1 root root 4096 May 29 18:23 new_id
lrwxrwxrwx 1 root root    0 May 29 18:32 ttyUSB0 -&gt; ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.0/ttyUSB0
lrwxrwxrwx 1 root root    0 May 29 18:32 ttyUSB1 -&gt; ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.2/ttyUSB1
lrwxrwxrwx 1 root root    0 May 29 18:32 ttyUSB2 -&gt; ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.3/ttyUSB2
--w------- 1 root root 4096 May 29 18:23 uevent
--w------- 1 root root 4096 May 29 18:23 unbind

bjorn@nemi:~$ ls -l /sys/bus/usb/drivers/usbserial_generic/
total 0
lrwxrwxrwx 1 root root    0 May 29 18:33 4-4:1.0 -&gt; ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.0
lrwxrwxrwx 1 root root    0 May 29 18:33 4-4:1.2 -&gt; ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.2
lrwxrwxrwx 1 root root    0 May 29 18:33 4-4:1.3 -&gt; ../../../../devices/pci0000:00/0000:00:1d.7/usb4/4-4/4-4:1.3
--w------- 1 root root 4096 May 29 18:33 bind
lrwxrwxrwx 1 root root    0 May 29 18:33 module -&gt; ../../../../module/usbserial
--w------- 1 root root 4096 May 29 18:22 uevent
--w------- 1 root root 4096 May 29 18:33 unbind
bjorn@nemi:~$ ls -l /sys/bus/usb-serial/drivers/generic/
total 0
--w------- 1 root root 4096 May 29 18:33 bind
lrwxrwxrwx 1 root root    0 May 29 18:33 module -&gt; ../../../../module/usbserial
-rw-r--r-- 1 root root 4096 May 29 18:33 new_id
--w------- 1 root root 4096 May 29 18:22 uevent
--w------- 1 root root 4096 May 29 18:33 unbind

So we end up with a mismatch between the USB driver and the
USB serial driver.  The reason for the above is simple: The
USB driver probe will succeed if *any* registered serial
driver matches, and will use that serial driver for all
serial driver functions.

This makes ref counting go wrong. We count the USB driver
as used, but not the USB serial driver.  This may result
in Oops'es as demonstrated by Johan Hovold &lt;jhovold@gmail.com&gt;:

[11811.646396] drivers/usb/serial/usb-serial.c: get_free_serial 1
[11811.646443] drivers/usb/serial/usb-serial.c: get_free_serial - minor base = 0
[11811.646460] drivers/usb/serial/usb-serial.c: usb_serial_probe - registering ttyUSB0
[11811.646766] usb 6-1: pl2303 converter now attached to ttyUSB0
[11812.264197] USB Serial deregistering driver FTDI USB Serial Device
[11812.264865] usbcore: deregistering interface driver ftdi_sio
[11812.282180] USB Serial deregistering driver pl2303
[11812.283141] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0
[11812.283272] usbcore: deregistering interface driver pl2303
[11812.301056] USB Serial deregistering driver generic
[11812.301186] usbcore: deregistering interface driver usbserial_generic
[11812.301259] drivers/usb/serial/usb-serial.c: usb_serial_disconnect
[11812.301823] BUG: unable to handle kernel paging request at f8e7438c
[11812.301845] IP: [&lt;f8e38445&gt;] usb_serial_disconnect+0xb5/0x100 [usbserial]
[11812.301871] *pde = 357ef067 *pte = 00000000
[11812.301957] Oops: 0000 [#1] PREEMPT SMP
[11812.301983] Modules linked in: usbserial(-) [last unloaded: pl2303]
[11812.302008]
[11812.302019] Pid: 1323, comm: modprobe Tainted: G        W    3.4.0-rc7+ #101 Dell Inc. Vostro 1520/0T816J
[11812.302115] EIP: 0060:[&lt;f8e38445&gt;] EFLAGS: 00010246 CPU: 1
[11812.302130] EIP is at usb_serial_disconnect+0xb5/0x100 [usbserial]
[11812.302141] EAX: f508a180 EBX: f508a180 ECX: 00000000 EDX: f8e74300
[11812.302151] ESI: f5050800 EDI: 00000001 EBP: f5141e78 ESP: f5141e58
[11812.302160]  DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
[11812.302170] CR0: 8005003b CR2: f8e7438c CR3: 34848000 CR4: 000007d0
[11812.302180] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
[11812.302189] DR6: ffff0ff0 DR7: 00000400
[11812.302199] Process modprobe (pid: 1323, ti=f5140000 task=f61e2bc0 task.ti=f5140000)
[11812.302209] Stack:
[11812.302216]  f8e3be0f f8e3b29c f8e3ae00 00000000 f513641c f5136400 f513641c f507a540
[11812.302325]  f5141e98 c133d2c1 00000000 00000000 f509c400 f513641c f507a590 f5136450
[11812.302372]  f5141ea8 c12f0344 f513641c f507a590 f5141ebc c12f0c67 00000000 f507a590
[11812.302419] Call Trace:
[11812.302439]  [&lt;c133d2c1&gt;] usb_unbind_interface+0x51/0x190
[11812.302456]  [&lt;c12f0344&gt;] __device_release_driver+0x64/0xb0
[11812.302469]  [&lt;c12f0c67&gt;] driver_detach+0x97/0xa0
[11812.302483]  [&lt;c12f001c&gt;] bus_remove_driver+0x6c/0xe0
[11812.302500]  [&lt;c145938d&gt;] ? __mutex_unlock_slowpath+0xcd/0x140
[11812.302514]  [&lt;c12f0ff9&gt;] driver_unregister+0x49/0x80
[11812.302528]  [&lt;c1457df6&gt;] ? printk+0x1d/0x1f
[11812.302540]  [&lt;c133c50d&gt;] usb_deregister+0x5d/0xb0
[11812.302557]  [&lt;f8e37c55&gt;] ? usb_serial_deregister+0x45/0x50 [usbserial]
[11812.302575]  [&lt;f8e37c8d&gt;] usb_serial_deregister_drivers+0x2d/0x40 [usbserial]
[11812.302593]  [&lt;f8e3a6e2&gt;] usb_serial_generic_deregister+0x12/0x20 [usbserial]
[11812.302611]  [&lt;f8e3acf0&gt;] usb_serial_exit+0x8/0x32 [usbserial]
[11812.302716]  [&lt;c1080b48&gt;] sys_delete_module+0x158/0x260
[11812.302730]  [&lt;c110594e&gt;] ? mntput+0x1e/0x30
[11812.302746]  [&lt;c145c3c3&gt;] ? sysenter_exit+0xf/0x18
[11812.302746]  [&lt;c107777c&gt;] ? trace_hardirqs_on_caller+0xec/0x170
[11812.302746]  [&lt;c145c390&gt;] sysenter_do_call+0x12/0x36
[11812.302746] Code: 24 02 00 00 e8 dd f3 20 c8 f6 86 74 02 00 00 02 74 b4 8d 86 4c 02 00 00 47 e8 78 55 4b c8 0f b6 43 0e 39 f8 7f a9 8b 53 04 89 d8 &lt;ff&gt; 92 8c 00 00 00 89 d8 e8 0e ff ff ff 8b 45 f0 c7 44 24 04 2f
[11812.302746] EIP: [&lt;f8e38445&gt;] usb_serial_disconnect+0xb5/0x100 [usbserial] SS:ESP 0068:f5141e58
[11812.302746] CR2: 00000000f8e7438c

Fix by only evaluating serial drivers pointing back to the
USB driver we are currently probing.  This still allows two
or more drivers to match the same device, running their
serial driver probes to sort out which one to use.

Signed-off-by: Bjørn Mork &lt;bjorn@mork.no&gt;
Reviewed-by: Felipe Balbi &lt;balbi@ti.com&gt;
Tested-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>USB: option: add more YUGA device ids</title>
<updated>2012-06-19T22:18:24Z</updated>
<author>
<name>说不得</name>
<email>gavin.kx@qq.com</email>
</author>
<published>2012-05-28T13:31:29Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b9f60ea7bcd215aca12be7989406fd04c43e8adf'/>
<id>urn:sha1:b9f60ea7bcd215aca12be7989406fd04c43e8adf</id>
<content type='text'>
commit 0ef0be15fd2564767f114c249fc4af704d8e16f4 upstream.

Signed-off-by: gavin zhu &lt;gavin.zhu@qq.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>USB: option: fix memory leak</title>
<updated>2012-06-19T22:18:23Z</updated>
<author>
<name>Johan Hovold</name>
<email>jhovold@gmail.com</email>
</author>
<published>2012-05-29T16:22:48Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=78eb9cdad95f77edeed29661fd1e2e0f5ab103e6'/>
<id>urn:sha1:78eb9cdad95f77edeed29661fd1e2e0f5ab103e6</id>
<content type='text'>
commit b9c3aab315b51f81649a0d737c4c73783fbd8de0 upstream.

Fix memory leak introduced by commit 383cedc3bb435de7a2 ("USB: serial:
full autosuspend support for the option driver") which allocates
usb-serial data but never frees it.

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>USB: option: fix port-data abuse</title>
<updated>2012-06-19T22:18:23Z</updated>
<author>
<name>Johan Hovold</name>
<email>jhovold@gmail.com</email>
</author>
<published>2012-05-29T15:57:52Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6a0bee09c55f4c133826fdea42510b097a2a6ad8'/>
<id>urn:sha1:6a0bee09c55f4c133826fdea42510b097a2a6ad8</id>
<content type='text'>
commit 4273f9878b0a8271df055e3c8f2e7f08c6a4a2f4 upstream.

Commit 8b4c6a3ab596961b78465 ("USB: option: Use generic USB wwan code")
moved option port-data allocation to usb_wwan_startup but still cast the
port data to the old struct...

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>USB: mct_u232: Fix incorrect TIOCMSET return</title>
<updated>2012-06-19T22:18:22Z</updated>
<author>
<name>Alan Cox</name>
<email>alan@linux.intel.com</email>
</author>
<published>2012-05-22T19:45:13Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=85887743d0201c3b422a722d6d5e43f27a139782'/>
<id>urn:sha1:85887743d0201c3b422a722d6d5e43f27a139782</id>
<content type='text'>
commit 1aa3c63cf0a79153ee13c8f82e4eb6c40b66a161 upstream.

The low level helper returns 1 on success. The ioctl should however return
0. As this is the only user of the helper return, make the helper return 0 or
an error code.

Resolves-bug: https://bugzilla.kernel.org/show_bug.cgi?id=43009
Signed-off-by: Alan Cox &lt;alan@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>USB: option: Updated Huawei K4605 has better id</title>
<updated>2012-06-19T22:18:22Z</updated>
<author>
<name>Andrew Bird</name>
<email>ajb@spheresystems.co.uk</email>
</author>
<published>2012-05-28T11:43:06Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0942852bf06ba780fe0c73e22ada76ab6fb7eb21'/>
<id>urn:sha1:0942852bf06ba780fe0c73e22ada76ab6fb7eb21</id>
<content type='text'>
commit 42ca7da1c2363dbef4ba1b6917c4c02274b6a5e2 upstream.

Later firmwares for this device now have proper subclass and
protocol info so we can identify it nicely without needing to use
the blacklist. I'm not removing the old 0xff matching as there
may be devices in the field that still need that.

Signed-off-by: Andrew Bird &lt;ajb@spheresystems.co.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>USB: serial: sierra: Add support for Sierra Wireless AirCard 320U modem</title>
<updated>2012-06-19T22:18:21Z</updated>
<author>
<name>Tom Cassidy</name>
<email>tomas.cassidy@gmail.com</email>
</author>
<published>2012-06-06T07:08:48Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=a436e816dd5d1562262718fe2cd8c513bb3c56a5'/>
<id>urn:sha1:a436e816dd5d1562262718fe2cd8c513bb3c56a5</id>
<content type='text'>
commit 19a3dd1575e954e8c004413bee3e12d3962f2525 upstream.

Add support for Sierra Wireless AirCard 320U modem

Signed-off-by: Tomas Cassidy &lt;tomas.cassidy@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
</feed>
