<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/usb/serial/usb-serial.c, branch v4.6-rc3</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>USB: serial: Destroy serial_minors IDR on module exit</title>
<updated>2015-07-09T08:41:23+00:00</updated>
<author>
<name>Johannes Thumshirn</name>
<email>jthumshirn@suse.de</email>
</author>
<published>2015-07-08T15:26:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=d23f47d4927fd2f61b3a754d83c7bcec215b5cfe'/>
<id>d23f47d4927fd2f61b3a754d83c7bcec215b5cfe</id>
<content type='text'>
Destroy serial_minors IDR on module exit, reclaiming the allocated memory.

This was detected by the following semantic patch (written by Luis
Rodriguez &lt;mcgrof@suse.com&gt;)

&lt;SmPL&gt;
@ defines_module_init @
declarer name module_init, module_exit;
declarer name DEFINE_IDR;
identifier init;
@@

module_init(init);

@ defines_module_exit @
identifier exit;
@@

module_exit(exit);

@ declares_idr depends on defines_module_init &amp;&amp; defines_module_exit @
identifier idr;
@@

DEFINE_IDR(idr);

@ on_exit_calls_destroy depends on declares_idr &amp;&amp; defines_module_exit @
identifier declares_idr.idr, defines_module_exit.exit;
@@

exit(void)
{
 ...
 idr_destroy(&amp;idr);
 ...
}

@ missing_module_idr_destroy depends on declares_idr &amp;&amp; defines_module_exit &amp;&amp; !on_exit_calls_destroy @
identifier declares_idr.idr, defines_module_exit.exit;
@@

exit(void)
{
 ...
 +idr_destroy(&amp;idr);
}
&lt;/SmPL&gt;

Signed-off-by: Johannes Thumshirn &lt;jthumshirn@suse.de&gt;
Cc: stable &lt;stable@vger.kernel.org&gt;	# v3.11
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Destroy serial_minors IDR on module exit, reclaiming the allocated memory.

This was detected by the following semantic patch (written by Luis
Rodriguez &lt;mcgrof@suse.com&gt;)

&lt;SmPL&gt;
@ defines_module_init @
declarer name module_init, module_exit;
declarer name DEFINE_IDR;
identifier init;
@@

module_init(init);

@ defines_module_exit @
identifier exit;
@@

module_exit(exit);

@ declares_idr depends on defines_module_init &amp;&amp; defines_module_exit @
identifier idr;
@@

DEFINE_IDR(idr);

@ on_exit_calls_destroy depends on declares_idr &amp;&amp; defines_module_exit @
identifier declares_idr.idr, defines_module_exit.exit;
@@

exit(void)
{
 ...
 idr_destroy(&amp;idr);
 ...
}

@ missing_module_idr_destroy depends on declares_idr &amp;&amp; defines_module_exit &amp;&amp; !on_exit_calls_destroy @
identifier declares_idr.idr, defines_module_exit.exit;
@@

exit(void)
{
 ...
 +idr_destroy(&amp;idr);
}
&lt;/SmPL&gt;

Signed-off-by: Johannes Thumshirn &lt;jthumshirn@suse.de&gt;
Cc: stable &lt;stable@vger.kernel.org&gt;	# v3.11
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>USB: serial: fix port attribute-creation race</title>
<updated>2015-02-26T16:12:46+00:00</updated>
<author>
<name>Johan Hovold</name>
<email>johan@kernel.org</email>
</author>
<published>2015-02-18T03:34:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=2deb96b5d4bb20a33bfaf80e30f38f3433653054'/>
<id>2deb96b5d4bb20a33bfaf80e30f38f3433653054</id>
<content type='text'>
Fix attribute-creation race with userspace by using the port device
groups field to create the port attributes.

Also use %u when printing the port number, which is unsigned, even
though we do not currently support more than 128 ports per device.

Reported-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Acked-by: Greg Kroah-Hartman &lt;greg@kroah.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix attribute-creation race with userspace by using the port device
groups field to create the port attributes.

Also use %u when printing the port number, which is unsigned, even
though we do not currently support more than 128 ports per device.

Reported-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Acked-by: Greg Kroah-Hartman &lt;greg@kroah.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "USB: serial: make bulk_out_size a lower limit"</title>
<updated>2015-02-26T16:02:15+00:00</updated>
<author>
<name>Johan Hovold</name>
<email>johan@kernel.org</email>
</author>
<published>2015-02-15T04:57:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=bc4b1f486fe69b86769e07c8edce472327a8462b'/>
<id>bc4b1f486fe69b86769e07c8edce472327a8462b</id>
<content type='text'>
This reverts commit 5083fd7bdfe6760577235a724cf6dccae13652c2.

A bulk-out size smaller than the end-point size is indeed valid. The
offending commit broke the usb-debug driver for EHCI debug devices,
which use 8-byte buffers.

Fixes: 5083fd7bdfe6 ("USB: serial: make bulk_out_size a lower limit")
Reported-by: "Li, Elvin" &lt;elvin.li@intel.com&gt;
Cc: stable &lt;stable@vger.kernel.org&gt;	# v3.15
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 5083fd7bdfe6760577235a724cf6dccae13652c2.

A bulk-out size smaller than the end-point size is indeed valid. The
offending commit broke the usb-debug driver for EHCI debug devices,
which use 8-byte buffers.

Fixes: 5083fd7bdfe6 ("USB: serial: make bulk_out_size a lower limit")
Reported-by: "Li, Elvin" &lt;elvin.li@intel.com&gt;
Cc: stable &lt;stable@vger.kernel.org&gt;	# v3.15
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>USB: serial: fix potential heap buffer overflow</title>
<updated>2014-08-27T20:23:52+00:00</updated>
<author>
<name>Johan Hovold</name>
<email>johan@kernel.org</email>
</author>
<published>2014-08-27T09:55:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=5654699fb38512bdbfc0f892ce54fce75bdc2bab'/>
<id>5654699fb38512bdbfc0f892ce54fce75bdc2bab</id>
<content type='text'>
Make sure to verify the number of ports requested by subdriver to avoid
writing beyond the end of fixed-size array in interface data.

The current usb-serial implementation is limited to eight ports per
interface but failed to verify that the number of ports requested by a
subdriver (which could have been determined from device descriptors) did
not exceed this limit.

Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Make sure to verify the number of ports requested by subdriver to avoid
writing beyond the end of fixed-size array in interface data.

The current usb-serial implementation is limited to eight ports per
interface but failed to verify that the number of ports requested by a
subdriver (which could have been determined from device descriptors) did
not exceed this limit.

Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>USB: serial: fix potential stack buffer overflow</title>
<updated>2014-08-27T20:23:52+00:00</updated>
<author>
<name>Johan Hovold</name>
<email>johan@kernel.org</email>
</author>
<published>2014-08-27T09:55:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=d979e9f9ecab04c1ecca741370e30a8a498893f5'/>
<id>d979e9f9ecab04c1ecca741370e30a8a498893f5</id>
<content type='text'>
Make sure to verify the maximum number of endpoints per type to avoid
writing beyond the end of a stack-allocated array.

The current usb-serial implementation is limited to eight ports per
interface but failed to verify that the number of endpoints of a certain
type reported by a device did not exceed this limit.

Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Make sure to verify the maximum number of endpoints per type to avoid
writing beyond the end of a stack-allocated array.

The current usb-serial implementation is limited to eight ports per
interface but failed to verify that the number of endpoints of a certain
type reported by a device did not exceed this limit.

Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>USB: serial: remove overly defensive port tests</title>
<updated>2014-05-27T22:04:08+00:00</updated>
<author>
<name>Johan Hovold</name>
<email>jhovold@gmail.com</email>
</author>
<published>2014-05-26T17:23:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=3fff3b4343f45963c087976c772348f3051a40ee'/>
<id>3fff3b4343f45963c087976c772348f3051a40ee</id>
<content type='text'>
The only way a port pointer may be NULL is if probe() failed, and in
that case neither disconnect(), resume(), or reset_resume() will be
called.

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The only way a port pointer may be NULL is if probe() failed, and in
that case neither disconnect(), resume(), or reset_resume() will be
called.

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>USB: serial: fix sysfs-attribute removal deadlock</title>
<updated>2014-04-24T19:50:56+00:00</updated>
<author>
<name>Johan Hovold</name>
<email>jhovold@gmail.com</email>
</author>
<published>2014-04-23T09:32:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=10164c2ad6d2c16809f6c09e278f946e47801b3a'/>
<id>10164c2ad6d2c16809f6c09e278f946e47801b3a</id>
<content type='text'>
Fix driver new_id sysfs-attribute removal deadlock by making sure to
not hold any locks that the attribute operations grab when removing the
attribute.

Specifically, usb_serial_deregister holds the table mutex when
deregistering the driver, which includes removing the new_id attribute.
This can lead to a deadlock as writing to new_id increments the
attribute's active count before trying to grab the same mutex in
usb_serial_probe.

The deadlock can easily be triggered by inserting a sleep in
usb_serial_deregister and writing the id of an unbound device to new_id
during module unload.

As the table mutex (in this case) is used to prevent subdriver unload
during probe, it should be sufficient to only hold the lock while
manipulating the usb-serial driver list during deregister. A racing
probe will then either fail to find a matching subdriver or fail to get
the corresponding module reference.

Since v3.15-rc1 this also triggers the following lockdep warning:

======================================================
[ INFO: possible circular locking dependency detected ]
3.15.0-rc2 #123 Tainted: G        W
-------------------------------------------------------
modprobe/190 is trying to acquire lock:
 (s_active#4){++++.+}, at: [&lt;c0167aa0&gt;] kernfs_remove_by_name_ns+0x4c/0x94

but task is already holding lock:
 (table_lock){+.+.+.}, at: [&lt;bf004d84&gt;] usb_serial_deregister+0x3c/0x78 [usbserial]

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #1 (table_lock){+.+.+.}:
       [&lt;c0075f84&gt;] __lock_acquire+0x1694/0x1ce4
       [&lt;c0076de8&gt;] lock_acquire+0xb4/0x154
       [&lt;c03af3cc&gt;] _raw_spin_lock+0x4c/0x5c
       [&lt;c02bbc24&gt;] usb_store_new_id+0x14c/0x1ac
       [&lt;bf007eb4&gt;] new_id_store+0x68/0x70 [usbserial]
       [&lt;c025f568&gt;] drv_attr_store+0x30/0x3c
       [&lt;c01690e0&gt;] sysfs_kf_write+0x5c/0x60
       [&lt;c01682c0&gt;] kernfs_fop_write+0xd4/0x194
       [&lt;c010881c&gt;] vfs_write+0xbc/0x198
       [&lt;c0108e4c&gt;] SyS_write+0x4c/0xa0
       [&lt;c000f880&gt;] ret_fast_syscall+0x0/0x48

-&gt; #0 (s_active#4){++++.+}:
       [&lt;c03a7a28&gt;] print_circular_bug+0x68/0x2f8
       [&lt;c0076218&gt;] __lock_acquire+0x1928/0x1ce4
       [&lt;c0076de8&gt;] lock_acquire+0xb4/0x154
       [&lt;c0166b70&gt;] __kernfs_remove+0x254/0x310
       [&lt;c0167aa0&gt;] kernfs_remove_by_name_ns+0x4c/0x94
       [&lt;c0169fb8&gt;] remove_files.isra.1+0x48/0x84
       [&lt;c016a2fc&gt;] sysfs_remove_group+0x58/0xac
       [&lt;c016a414&gt;] sysfs_remove_groups+0x34/0x44
       [&lt;c02623b8&gt;] driver_remove_groups+0x1c/0x20
       [&lt;c0260e9c&gt;] bus_remove_driver+0x3c/0xe4
       [&lt;c026235c&gt;] driver_unregister+0x38/0x58
       [&lt;bf007fb4&gt;] usb_serial_bus_deregister+0x84/0x88 [usbserial]
       [&lt;bf004db4&gt;] usb_serial_deregister+0x6c/0x78 [usbserial]
       [&lt;bf005330&gt;] usb_serial_deregister_drivers+0x2c/0x4c [usbserial]
       [&lt;bf016618&gt;] usb_serial_module_exit+0x14/0x1c [sierra]
       [&lt;c009d6cc&gt;] SyS_delete_module+0x184/0x210
       [&lt;c000f880&gt;] ret_fast_syscall+0x0/0x48

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(table_lock);
                               lock(s_active#4);
                               lock(table_lock);
  lock(s_active#4);

 *** DEADLOCK ***

1 lock held by modprobe/190:
 #0:  (table_lock){+.+.+.}, at: [&lt;bf004d84&gt;] usb_serial_deregister+0x3c/0x78 [usbserial]

stack backtrace:
CPU: 0 PID: 190 Comm: modprobe Tainted: G        W     3.15.0-rc2 #123
[&lt;c0015e10&gt;] (unwind_backtrace) from [&lt;c0013728&gt;] (show_stack+0x20/0x24)
[&lt;c0013728&gt;] (show_stack) from [&lt;c03a9a54&gt;] (dump_stack+0x24/0x28)
[&lt;c03a9a54&gt;] (dump_stack) from [&lt;c03a7cac&gt;] (print_circular_bug+0x2ec/0x2f8)
[&lt;c03a7cac&gt;] (print_circular_bug) from [&lt;c0076218&gt;] (__lock_acquire+0x1928/0x1ce4)
[&lt;c0076218&gt;] (__lock_acquire) from [&lt;c0076de8&gt;] (lock_acquire+0xb4/0x154)
[&lt;c0076de8&gt;] (lock_acquire) from [&lt;c0166b70&gt;] (__kernfs_remove+0x254/0x310)
[&lt;c0166b70&gt;] (__kernfs_remove) from [&lt;c0167aa0&gt;] (kernfs_remove_by_name_ns+0x4c/0x94)
[&lt;c0167aa0&gt;] (kernfs_remove_by_name_ns) from [&lt;c0169fb8&gt;] (remove_files.isra.1+0x48/0x84)
[&lt;c0169fb8&gt;] (remove_files.isra.1) from [&lt;c016a2fc&gt;] (sysfs_remove_group+0x58/0xac)
[&lt;c016a2fc&gt;] (sysfs_remove_group) from [&lt;c016a414&gt;] (sysfs_remove_groups+0x34/0x44)
[&lt;c016a414&gt;] (sysfs_remove_groups) from [&lt;c02623b8&gt;] (driver_remove_groups+0x1c/0x20)
[&lt;c02623b8&gt;] (driver_remove_groups) from [&lt;c0260e9c&gt;] (bus_remove_driver+0x3c/0xe4)
[&lt;c0260e9c&gt;] (bus_remove_driver) from [&lt;c026235c&gt;] (driver_unregister+0x38/0x58)
[&lt;c026235c&gt;] (driver_unregister) from [&lt;bf007fb4&gt;] (usb_serial_bus_deregister+0x84/0x88 [usbserial])
[&lt;bf007fb4&gt;] (usb_serial_bus_deregister [usbserial]) from [&lt;bf004db4&gt;] (usb_serial_deregister+0x6c/0x78 [usbserial])
[&lt;bf004db4&gt;] (usb_serial_deregister [usbserial]) from [&lt;bf005330&gt;] (usb_serial_deregister_drivers+0x2c/0x4c [usbserial])
[&lt;bf005330&gt;] (usb_serial_deregister_drivers [usbserial]) from [&lt;bf016618&gt;] (usb_serial_module_exit+0x14/0x1c [sierra])
[&lt;bf016618&gt;] (usb_serial_module_exit [sierra]) from [&lt;c009d6cc&gt;] (SyS_delete_module+0x184/0x210)
[&lt;c009d6cc&gt;] (SyS_delete_module) from [&lt;c000f880&gt;] (ret_fast_syscall+0x0/0x48)

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix driver new_id sysfs-attribute removal deadlock by making sure to
not hold any locks that the attribute operations grab when removing the
attribute.

Specifically, usb_serial_deregister holds the table mutex when
deregistering the driver, which includes removing the new_id attribute.
This can lead to a deadlock as writing to new_id increments the
attribute's active count before trying to grab the same mutex in
usb_serial_probe.

The deadlock can easily be triggered by inserting a sleep in
usb_serial_deregister and writing the id of an unbound device to new_id
during module unload.

As the table mutex (in this case) is used to prevent subdriver unload
during probe, it should be sufficient to only hold the lock while
manipulating the usb-serial driver list during deregister. A racing
probe will then either fail to find a matching subdriver or fail to get
the corresponding module reference.

Since v3.15-rc1 this also triggers the following lockdep warning:

======================================================
[ INFO: possible circular locking dependency detected ]
3.15.0-rc2 #123 Tainted: G        W
-------------------------------------------------------
modprobe/190 is trying to acquire lock:
 (s_active#4){++++.+}, at: [&lt;c0167aa0&gt;] kernfs_remove_by_name_ns+0x4c/0x94

but task is already holding lock:
 (table_lock){+.+.+.}, at: [&lt;bf004d84&gt;] usb_serial_deregister+0x3c/0x78 [usbserial]

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #1 (table_lock){+.+.+.}:
       [&lt;c0075f84&gt;] __lock_acquire+0x1694/0x1ce4
       [&lt;c0076de8&gt;] lock_acquire+0xb4/0x154
       [&lt;c03af3cc&gt;] _raw_spin_lock+0x4c/0x5c
       [&lt;c02bbc24&gt;] usb_store_new_id+0x14c/0x1ac
       [&lt;bf007eb4&gt;] new_id_store+0x68/0x70 [usbserial]
       [&lt;c025f568&gt;] drv_attr_store+0x30/0x3c
       [&lt;c01690e0&gt;] sysfs_kf_write+0x5c/0x60
       [&lt;c01682c0&gt;] kernfs_fop_write+0xd4/0x194
       [&lt;c010881c&gt;] vfs_write+0xbc/0x198
       [&lt;c0108e4c&gt;] SyS_write+0x4c/0xa0
       [&lt;c000f880&gt;] ret_fast_syscall+0x0/0x48

-&gt; #0 (s_active#4){++++.+}:
       [&lt;c03a7a28&gt;] print_circular_bug+0x68/0x2f8
       [&lt;c0076218&gt;] __lock_acquire+0x1928/0x1ce4
       [&lt;c0076de8&gt;] lock_acquire+0xb4/0x154
       [&lt;c0166b70&gt;] __kernfs_remove+0x254/0x310
       [&lt;c0167aa0&gt;] kernfs_remove_by_name_ns+0x4c/0x94
       [&lt;c0169fb8&gt;] remove_files.isra.1+0x48/0x84
       [&lt;c016a2fc&gt;] sysfs_remove_group+0x58/0xac
       [&lt;c016a414&gt;] sysfs_remove_groups+0x34/0x44
       [&lt;c02623b8&gt;] driver_remove_groups+0x1c/0x20
       [&lt;c0260e9c&gt;] bus_remove_driver+0x3c/0xe4
       [&lt;c026235c&gt;] driver_unregister+0x38/0x58
       [&lt;bf007fb4&gt;] usb_serial_bus_deregister+0x84/0x88 [usbserial]
       [&lt;bf004db4&gt;] usb_serial_deregister+0x6c/0x78 [usbserial]
       [&lt;bf005330&gt;] usb_serial_deregister_drivers+0x2c/0x4c [usbserial]
       [&lt;bf016618&gt;] usb_serial_module_exit+0x14/0x1c [sierra]
       [&lt;c009d6cc&gt;] SyS_delete_module+0x184/0x210
       [&lt;c000f880&gt;] ret_fast_syscall+0x0/0x48

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(table_lock);
                               lock(s_active#4);
                               lock(table_lock);
  lock(s_active#4);

 *** DEADLOCK ***

1 lock held by modprobe/190:
 #0:  (table_lock){+.+.+.}, at: [&lt;bf004d84&gt;] usb_serial_deregister+0x3c/0x78 [usbserial]

stack backtrace:
CPU: 0 PID: 190 Comm: modprobe Tainted: G        W     3.15.0-rc2 #123
[&lt;c0015e10&gt;] (unwind_backtrace) from [&lt;c0013728&gt;] (show_stack+0x20/0x24)
[&lt;c0013728&gt;] (show_stack) from [&lt;c03a9a54&gt;] (dump_stack+0x24/0x28)
[&lt;c03a9a54&gt;] (dump_stack) from [&lt;c03a7cac&gt;] (print_circular_bug+0x2ec/0x2f8)
[&lt;c03a7cac&gt;] (print_circular_bug) from [&lt;c0076218&gt;] (__lock_acquire+0x1928/0x1ce4)
[&lt;c0076218&gt;] (__lock_acquire) from [&lt;c0076de8&gt;] (lock_acquire+0xb4/0x154)
[&lt;c0076de8&gt;] (lock_acquire) from [&lt;c0166b70&gt;] (__kernfs_remove+0x254/0x310)
[&lt;c0166b70&gt;] (__kernfs_remove) from [&lt;c0167aa0&gt;] (kernfs_remove_by_name_ns+0x4c/0x94)
[&lt;c0167aa0&gt;] (kernfs_remove_by_name_ns) from [&lt;c0169fb8&gt;] (remove_files.isra.1+0x48/0x84)
[&lt;c0169fb8&gt;] (remove_files.isra.1) from [&lt;c016a2fc&gt;] (sysfs_remove_group+0x58/0xac)
[&lt;c016a2fc&gt;] (sysfs_remove_group) from [&lt;c016a414&gt;] (sysfs_remove_groups+0x34/0x44)
[&lt;c016a414&gt;] (sysfs_remove_groups) from [&lt;c02623b8&gt;] (driver_remove_groups+0x1c/0x20)
[&lt;c02623b8&gt;] (driver_remove_groups) from [&lt;c0260e9c&gt;] (bus_remove_driver+0x3c/0xe4)
[&lt;c0260e9c&gt;] (bus_remove_driver) from [&lt;c026235c&gt;] (driver_unregister+0x38/0x58)
[&lt;c026235c&gt;] (driver_unregister) from [&lt;bf007fb4&gt;] (usb_serial_bus_deregister+0x84/0x88 [usbserial])
[&lt;bf007fb4&gt;] (usb_serial_bus_deregister [usbserial]) from [&lt;bf004db4&gt;] (usb_serial_deregister+0x6c/0x78 [usbserial])
[&lt;bf004db4&gt;] (usb_serial_deregister [usbserial]) from [&lt;bf005330&gt;] (usb_serial_deregister_drivers+0x2c/0x4c [usbserial])
[&lt;bf005330&gt;] (usb_serial_deregister_drivers [usbserial]) from [&lt;bf016618&gt;] (usb_serial_module_exit+0x14/0x1c [sierra])
[&lt;bf016618&gt;] (usb_serial_module_exit [sierra]) from [&lt;c009d6cc&gt;] (SyS_delete_module+0x184/0x210)
[&lt;c009d6cc&gt;] (SyS_delete_module) from [&lt;c000f880&gt;] (ret_fast_syscall+0x0/0x48)

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>USB: serial: add missing newlines to dev_&lt;level&gt; messages.</title>
<updated>2014-03-12T19:44:50+00:00</updated>
<author>
<name>Johan Hovold</name>
<email>jhovold@gmail.com</email>
</author>
<published>2014-03-12T18:09:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=d9a38a8741fdffabc32e6d0943b1cdcf22712bec'/>
<id>d9a38a8741fdffabc32e6d0943b1cdcf22712bec</id>
<content type='text'>
Add missing newlines to dev_&lt;level&gt; messages.

Also make some messages less verbose where appropriate.

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;greg@kroah.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add missing newlines to dev_&lt;level&gt; messages.

Also make some messages less verbose where appropriate.

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;greg@kroah.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>USB: serial: add missing braces</title>
<updated>2014-03-12T19:44:50+00:00</updated>
<author>
<name>Johan Hovold</name>
<email>jhovold@gmail.com</email>
</author>
<published>2014-03-12T18:09:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ca0400d2caf0d6f18445feea79c8c5a4ccf77e61'/>
<id>ca0400d2caf0d6f18445feea79c8c5a4ccf77e61</id>
<content type='text'>
Add missing braces to conditional branches and one loop in usb-serial
core and generic implementation.

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;greg@kroah.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add missing braces to conditional branches and one loop in usb-serial
core and generic implementation.

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;greg@kroah.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>USB: serial: make bulk_out_size a lower limit</title>
<updated>2014-03-12T19:44:49+00:00</updated>
<author>
<name>Johan Hovold</name>
<email>jhovold@gmail.com</email>
</author>
<published>2014-03-12T18:09:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=5083fd7bdfe6760577235a724cf6dccae13652c2'/>
<id>5083fd7bdfe6760577235a724cf6dccae13652c2</id>
<content type='text'>
Drivers are allowed to override the default bulk-out buffer size
(endpoint maximum packet size) in order to increase throughput, but it
does not make much sense to allow buffers smaller than the default.

Note that this is already how bulk_in_size is defined.

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;greg@kroah.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Drivers are allowed to override the default bulk-out buffer size
(endpoint maximum packet size) in order to increase throughput, but it
does not make much sense to allow buffers smaller than the default.

Note that this is already how bulk_in_size is defined.

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;greg@kroah.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
