<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/net, branch v3.4-rc5</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>drivers/net: Do not free an IRQ if its request failed</title>
<updated>2012-04-21T20:41:11+00:00</updated>
<author>
<name>Lee Jones</name>
<email>lee.jones@linaro.org</email>
</author>
<published>2012-04-19T10:36:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=163faf31778e536ac6125bc8b14f4667adc910e9'/>
<id>163faf31778e536ac6125bc8b14f4667adc910e9</id>
<content type='text'>
Refrain from attempting to free an interrupt line if the request
fails and hence, there is no IRQ to free.

CC: netdev@vger.kernel.org
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Refrain from attempting to free an interrupt line if the request
fails and hence, there is no IRQ to free.

CC: netdev@vger.kernel.org
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ks8851: Fix request_irq/free_irq mismatch</title>
<updated>2012-04-21T19:55:31+00:00</updated>
<author>
<name>Matt Renzelmann</name>
<email>mjr@cs.wisc.edu</email>
</author>
<published>2012-04-19T07:17:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=e8195b24feb208f6e944e7542779f4397776794d'/>
<id>e8195b24feb208f6e944e7542779f4397776794d</id>
<content type='text'>
The dev_id parameter passed to free_irq needs to match the one passed
to the corresponding request_irq.

Signed-off-by: Matt Renzelmann &lt;mjr@cs.wisc.edu&gt;
Acked-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The dev_id parameter passed to free_irq needs to match the one passed
to the corresponding request_irq.

Signed-off-by: Matt Renzelmann &lt;mjr@cs.wisc.edu&gt;
Acked-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net/hyperv: Adding cancellation to ensure rndis filter is closed</title>
<updated>2012-04-21T19:38:10+00:00</updated>
<author>
<name>Wenqi Ma</name>
<email>wenqi_ma@trendmicro.com.cn</email>
</author>
<published>2012-04-19T00:39:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=792df87228965c58c307877af00498641584bd47'/>
<id>792df87228965c58c307877af00498641584bd47</id>
<content type='text'>
Although the network interface is down, the RX packets number which
could be observed by ifconfig may keep on increasing.

This is because the WORK scheduled in netvsc_set_multicast_list()
may be executed after netvsc_close(). That means the rndis filter
may be re-enabled by do_set_multicast() even if it was closed by
netvsc_close().

By canceling possible WORK before close the rndis filter, the issue
could be never happened.

Signed-off-by: Wenqi Ma &lt;wenqi_ma@trendmicro.com.cn&gt;
Reviewed-by: Wei Yongjun &lt;yongjun_wei@trendmicro.com.cn&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Although the network interface is down, the RX packets number which
could be observed by ifconfig may keep on increasing.

This is because the WORK scheduled in netvsc_set_multicast_list()
may be executed after netvsc_close(). That means the rndis filter
may be re-enabled by do_set_multicast() even if it was closed by
netvsc_close().

By canceling possible WORK before close the rndis filter, the issue
could be never happened.

Signed-off-by: Wenqi Ma &lt;wenqi_ma@trendmicro.com.cn&gt;
Reviewed-by: Wei Yongjun &lt;yongjun_wei@trendmicro.com.cn&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ks8851: Fix mutex deadlock in ks8851_net_stop()</title>
<updated>2012-04-21T19:33:14+00:00</updated>
<author>
<name>Stephen Boyd</name>
<email>sboyd@codeaurora.org</email>
</author>
<published>2012-04-18T17:25:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=c5a99937a9cf74a623384023201a7d98b51e7e3b'/>
<id>c5a99937a9cf74a623384023201a7d98b51e7e3b</id>
<content type='text'>
There is a potential deadlock scenario when the ks8851 driver
is removed. The interrupt handler schedules a workqueue which
acquires a mutex that ks8851_net_stop() also acquires before
flushing the workqueue. Previously lockdep wouldn't be able
to find this problem but now that it has the support we can
trigger this lockdep warning by rmmoding the driver after
an ifconfig up.

Fix the possible deadlock by disabling the interrupts in
the chip and then release the lock across the workqueue
flushing. The mutex is only there to proect the registers
anyway so this should be ok.

=======================================================
[ INFO: possible circular locking dependency detected ]
3.0.21-00021-g8b33780-dirty #2911
-------------------------------------------------------
rmmod/125 is trying to acquire lock:
 ((&amp;ks-&gt;irq_work)){+.+...}, at: [&lt;c019e0b8&gt;] flush_work+0x0/0xac

but task is already holding lock:
 (&amp;ks-&gt;lock){+.+...}, at: [&lt;bf00b850&gt;] ks8851_net_stop+0x64/0x138 [ks8851]

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #1 (&amp;ks-&gt;lock){+.+...}:
       [&lt;c01b89c8&gt;] __lock_acquire+0x940/0x9f8
       [&lt;c01b9058&gt;] lock_acquire+0x10c/0x130
       [&lt;c083dbec&gt;] mutex_lock_nested+0x68/0x3dc
       [&lt;bf00bd48&gt;] ks8851_irq_work+0x24/0x46c [ks8851]
       [&lt;c019c580&gt;] process_one_work+0x2d8/0x518
       [&lt;c019cb98&gt;] worker_thread+0x220/0x3a0
       [&lt;c01a2ad4&gt;] kthread+0x88/0x94
       [&lt;c0107008&gt;] kernel_thread_exit+0x0/0x8

-&gt; #0 ((&amp;ks-&gt;irq_work)){+.+...}:
       [&lt;c01b7984&gt;] validate_chain+0x914/0x1018
       [&lt;c01b89c8&gt;] __lock_acquire+0x940/0x9f8
       [&lt;c01b9058&gt;] lock_acquire+0x10c/0x130
       [&lt;c019e104&gt;] flush_work+0x4c/0xac
       [&lt;bf00b858&gt;] ks8851_net_stop+0x6c/0x138 [ks8851]
       [&lt;c06b209c&gt;] __dev_close_many+0x98/0xcc
       [&lt;c06b2174&gt;] dev_close_many+0x68/0xd0
       [&lt;c06b22ec&gt;] rollback_registered_many+0xcc/0x2b8
       [&lt;c06b2554&gt;] rollback_registered+0x28/0x34
       [&lt;c06b25b8&gt;] unregister_netdevice_queue+0x58/0x7c
       [&lt;c06b25f4&gt;] unregister_netdev+0x18/0x20
       [&lt;bf00c1f4&gt;] ks8851_remove+0x64/0xb4 [ks8851]
       [&lt;c049ddf0&gt;] spi_drv_remove+0x18/0x1c
       [&lt;c0468e98&gt;] __device_release_driver+0x7c/0xbc
       [&lt;c0468f64&gt;] driver_detach+0x8c/0xb4
       [&lt;c0467f00&gt;] bus_remove_driver+0xb8/0xe8
       [&lt;c01c1d20&gt;] sys_delete_module+0x1e8/0x27c
       [&lt;c0105ec0&gt;] ret_fast_syscall+0x0/0x3c

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&amp;ks-&gt;lock);
                               lock((&amp;ks-&gt;irq_work));
                               lock(&amp;ks-&gt;lock);
  lock((&amp;ks-&gt;irq_work));

 *** DEADLOCK ***

4 locks held by rmmod/125:
 #0:  (&amp;__lockdep_no_validate__){+.+.+.}, at: [&lt;c0468f44&gt;] driver_detach+0x6c/0xb4
 #1:  (&amp;__lockdep_no_validate__){+.+.+.}, at: [&lt;c0468f50&gt;] driver_detach+0x78/0xb4
 #2:  (rtnl_mutex){+.+.+.}, at: [&lt;c06b25e8&gt;] unregister_netdev+0xc/0x20
 #3:  (&amp;ks-&gt;lock){+.+...}, at: [&lt;bf00b850&gt;] ks8851_net_stop+0x64/0x138 [ks8851]

Cc: Ben Dooks &lt;ben-linux@fluff.org&gt;
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There is a potential deadlock scenario when the ks8851 driver
is removed. The interrupt handler schedules a workqueue which
acquires a mutex that ks8851_net_stop() also acquires before
flushing the workqueue. Previously lockdep wouldn't be able
to find this problem but now that it has the support we can
trigger this lockdep warning by rmmoding the driver after
an ifconfig up.

Fix the possible deadlock by disabling the interrupts in
the chip and then release the lock across the workqueue
flushing. The mutex is only there to proect the registers
anyway so this should be ok.

=======================================================
[ INFO: possible circular locking dependency detected ]
3.0.21-00021-g8b33780-dirty #2911
-------------------------------------------------------
rmmod/125 is trying to acquire lock:
 ((&amp;ks-&gt;irq_work)){+.+...}, at: [&lt;c019e0b8&gt;] flush_work+0x0/0xac

but task is already holding lock:
 (&amp;ks-&gt;lock){+.+...}, at: [&lt;bf00b850&gt;] ks8851_net_stop+0x64/0x138 [ks8851]

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #1 (&amp;ks-&gt;lock){+.+...}:
       [&lt;c01b89c8&gt;] __lock_acquire+0x940/0x9f8
       [&lt;c01b9058&gt;] lock_acquire+0x10c/0x130
       [&lt;c083dbec&gt;] mutex_lock_nested+0x68/0x3dc
       [&lt;bf00bd48&gt;] ks8851_irq_work+0x24/0x46c [ks8851]
       [&lt;c019c580&gt;] process_one_work+0x2d8/0x518
       [&lt;c019cb98&gt;] worker_thread+0x220/0x3a0
       [&lt;c01a2ad4&gt;] kthread+0x88/0x94
       [&lt;c0107008&gt;] kernel_thread_exit+0x0/0x8

-&gt; #0 ((&amp;ks-&gt;irq_work)){+.+...}:
       [&lt;c01b7984&gt;] validate_chain+0x914/0x1018
       [&lt;c01b89c8&gt;] __lock_acquire+0x940/0x9f8
       [&lt;c01b9058&gt;] lock_acquire+0x10c/0x130
       [&lt;c019e104&gt;] flush_work+0x4c/0xac
       [&lt;bf00b858&gt;] ks8851_net_stop+0x6c/0x138 [ks8851]
       [&lt;c06b209c&gt;] __dev_close_many+0x98/0xcc
       [&lt;c06b2174&gt;] dev_close_many+0x68/0xd0
       [&lt;c06b22ec&gt;] rollback_registered_many+0xcc/0x2b8
       [&lt;c06b2554&gt;] rollback_registered+0x28/0x34
       [&lt;c06b25b8&gt;] unregister_netdevice_queue+0x58/0x7c
       [&lt;c06b25f4&gt;] unregister_netdev+0x18/0x20
       [&lt;bf00c1f4&gt;] ks8851_remove+0x64/0xb4 [ks8851]
       [&lt;c049ddf0&gt;] spi_drv_remove+0x18/0x1c
       [&lt;c0468e98&gt;] __device_release_driver+0x7c/0xbc
       [&lt;c0468f64&gt;] driver_detach+0x8c/0xb4
       [&lt;c0467f00&gt;] bus_remove_driver+0xb8/0xe8
       [&lt;c01c1d20&gt;] sys_delete_module+0x1e8/0x27c
       [&lt;c0105ec0&gt;] ret_fast_syscall+0x0/0x3c

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&amp;ks-&gt;lock);
                               lock((&amp;ks-&gt;irq_work));
                               lock(&amp;ks-&gt;lock);
  lock((&amp;ks-&gt;irq_work));

 *** DEADLOCK ***

4 locks held by rmmod/125:
 #0:  (&amp;__lockdep_no_validate__){+.+.+.}, at: [&lt;c0468f44&gt;] driver_detach+0x6c/0xb4
 #1:  (&amp;__lockdep_no_validate__){+.+.+.}, at: [&lt;c0468f50&gt;] driver_detach+0x78/0xb4
 #2:  (rtnl_mutex){+.+.+.}, at: [&lt;c06b25e8&gt;] unregister_netdev+0xc/0x20
 #3:  (&amp;ks-&gt;lock){+.+...}, at: [&lt;bf00b850&gt;] ks8851_net_stop+0x64/0x138 [ks8851]

Cc: Ben Dooks &lt;ben-linux@fluff.org&gt;
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>icplus: fix interrupt for IC+ 101A/G and 1001LF</title>
<updated>2012-04-19T19:34:18+00:00</updated>
<author>
<name>Giuseppe CAVALLARO</name>
<email>peppe.cavallaro@st.com</email>
</author>
<published>2012-04-17T21:16:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=996f73937cd85031da8dbcd3222a710cb762d428'/>
<id>996f73937cd85031da8dbcd3222a710cb762d428</id>
<content type='text'>
This patch fixes and adds the irq handler for the
IC+ 101A/G where we need to read the reg17 to clean
the irq.
Also remove the flag for the 1001LF where no interrupt
can be used for this device.

Signed-off-by: Giuseppe Cavallaro &lt;peppe.cavallaro@st.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch fixes and adds the irq handler for the
IC+ 101A/G where we need to read the reg17 to clean
the irq.
Also remove the flag for the 1001LF where no interrupt
can be used for this device.

Signed-off-by: Giuseppe Cavallaro &lt;peppe.cavallaro@st.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: qmi_wwan: support Sierra Wireless MC77xx devices in QMI mode</title>
<updated>2012-04-19T19:26:42+00:00</updated>
<author>
<name>Bjørn Mork</name>
<email>bjorn@mork.no</email>
</author>
<published>2012-04-17T09:38:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=3bc17d10c9f8ac67eb474737d74894ef2e60d27c'/>
<id>3bc17d10c9f8ac67eb474737d74894ef2e60d27c</id>
<content type='text'>
The MC77xx devices can operate in two modes: "Direct IP" or "QMI",
switchable using a password protected AT command.  Both product ID
and USB interface configuration will change when switched.

The "sierra_net" driver supports the "Direct IP" mode.  This driver
supports the "QMI" mode.

There are also multiple possible USB interface configurations in each
mode, some providing more than one wwan interface.  Like many other
devices made for Windows, different interface types are identified
using a static interface number.  We define a Sierra specific
interface whitelist to support this.

Signed-off-by: Bjørn Mork &lt;bjorn@mork.no&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The MC77xx devices can operate in two modes: "Direct IP" or "QMI",
switchable using a password protected AT command.  Both product ID
and USB interface configuration will change when switched.

The "sierra_net" driver supports the "Direct IP" mode.  This driver
supports the "QMI" mode.

There are also multiple possible USB interface configurations in each
mode, some providing more than one wwan interface.  Like many other
devices made for Windows, different interface types are identified
using a static interface number.  We define a Sierra specific
interface whitelist to support this.

Signed-off-by: Bjørn Mork &lt;bjorn@mork.no&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>bnx2x: off by one in bnx2x_ets_e3b0_sp_pri_to_cos_set()</title>
<updated>2012-04-19T19:22:44+00:00</updated>
<author>
<name>Dan Carpenter</name>
<email>dan.carpenter@oracle.com</email>
</author>
<published>2012-04-17T20:53:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=7e5998aa74065d3ab31d17e667f40ffebf4b8425'/>
<id>7e5998aa74065d3ab31d17e667f40ffebf4b8425</id>
<content type='text'>
The sp_pri_to_cos[] array size depends on the config but lets say it is
BX_E3B0_MAX_NUM_COS_PORT0 and max_num_of_cos is also
DCBX_E3B0_MAX_NUM_COS_PORT0.  In the original code
"pri == max_num_of_cos" was accepted but it is one past the end of the
array.

Also we used "pri" before capping it.  It's a harmless read past the end
of the array, but it would affect which error message gets printed.

Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Acked-by: Eilon Greenstein &lt;eilong@broadcom.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The sp_pri_to_cos[] array size depends on the config but lets say it is
BX_E3B0_MAX_NUM_COS_PORT0 and max_num_of_cos is also
DCBX_E3B0_MAX_NUM_COS_PORT0.  In the original code
"pri == max_num_of_cos" was accepted but it is one past the end of the
array.

Also we used "pri" before capping it.  It's a harmless read past the end
of the array, but it would affect which error message gets printed.

Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Acked-by: Eilon Greenstein &lt;eilong@broadcom.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ksz884x: don't copy too much in netdev_set_mac_address()</title>
<updated>2012-04-19T17:25:03+00:00</updated>
<author>
<name>Dan Carpenter</name>
<email>dan.carpenter@oracle.com</email>
</author>
<published>2012-04-19T07:00:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=716af4abd6e6370226f567af50bfaca274515980'/>
<id>716af4abd6e6370226f567af50bfaca274515980</id>
<content type='text'>
MAX_ADDR_LEN is 32.  ETH_ALEN is 6.  mac-&gt;sa_data is a 14 byte array, so
the memcpy() is doing a read past the end of the array.  I asked about
this on netdev and Ben Hutchings told me it's supposed to be copying
ETH_ALEN bytes (thanks Ben).

Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
MAX_ADDR_LEN is 32.  ETH_ALEN is 6.  mac-&gt;sa_data is a 14 byte array, so
the memcpy() is doing a read past the end of the array.  I asked about
this on netdev and Ben Hutchings told me it's supposed to be copying
ETH_ALEN bytes (thanks Ben).

Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem</title>
<updated>2012-04-18T17:37:33+00:00</updated>
<author>
<name>John W. Linville</name>
<email>linville@tuxdriver.com</email>
</author>
<published>2012-04-18T17:37:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=dbd717e37bf1409fd250d13aef2cab07bcae8c88'/>
<id>dbd717e37bf1409fd250d13aef2cab07bcae8c88</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net</title>
<updated>2012-04-18T02:58:52+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2012-04-18T02:58:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=9fe5642f4a3b13beb43c2633db7df22dd9d99250'/>
<id>9fe5642f4a3b13beb43c2633db7df22dd9d99250</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
