<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/net, branch v3.17.4</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>iwlwifi: fix RFkill while calibrating</title>
<updated>2014-11-21T17:23:16+00:00</updated>
<author>
<name>Emmanuel Grumbach</name>
<email>emmanuel.grumbach@intel.com</email>
</author>
<published>2014-11-02T13:48:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=16241ecae4c810f606158439c61706df861702d4'/>
<id>16241ecae4c810f606158439c61706df861702d4</id>
<content type='text'>
commit 31b8b343e019e0a0c57ca9c13520a87f9cab884b upstream.

If the RFkill interrupt fires while we calibrate, it would
make the firmware fail and the driver wasn't able to recover.
Change the flow so that the driver will kill the firmware
in that case.

Since we have now two flows that are calling
trans_stop_device (the RFkill interrupt and the
op_mode_mvm_start function) - we need to better sync this.
Use the STATUS_DEVICE_ENABLED in the pcie transport in an
atomic way to achieve this.

This fixes: https://bugzilla.kernel.org/show_bug.cgi?id=86231

Reviewed-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Reviewed-by: Luciano Coelho &lt;luciano.coelho@intel.com&gt;
Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.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>
commit 31b8b343e019e0a0c57ca9c13520a87f9cab884b upstream.

If the RFkill interrupt fires while we calibrate, it would
make the firmware fail and the driver wasn't able to recover.
Change the flow so that the driver will kill the firmware
in that case.

Since we have now two flows that are calling
trans_stop_device (the RFkill interrupt and the
op_mode_mvm_start function) - we need to better sync this.
Use the STATUS_DEVICE_ENABLED in the pcie transport in an
atomic way to achieve this.

This fixes: https://bugzilla.kernel.org/show_bug.cgi?id=86231

Reviewed-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Reviewed-by: Luciano Coelho &lt;luciano.coelho@intel.com&gt;
Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>net: systemport: reset UniMAC coming out of a suspend cycle</title>
<updated>2014-11-21T17:23:14+00:00</updated>
<author>
<name>Florian Fainelli</name>
<email>f.fainelli@gmail.com</email>
</author>
<published>2014-10-28T18:12:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=fc2a6cea644e916a05f12bd324f8b2cacb0cd878'/>
<id>fc2a6cea644e916a05f12bd324f8b2cacb0cd878</id>
<content type='text'>
commit 704d33e7006f20f9b4fa7d24a0f08c4b5919b131 upstream.

bcm_sysport_resume() was missing an UniMAC reset which can lead to
various receive FIFO corruptions coming out of a suspend cycle. If the
RX FIFO is stuck, it will deliver corrupted/duplicate packets towards
the host CPU interface.

This could be reproduced on crowded network and when Wake-on-LAN is
enabled for this particular interface because the switch still forwards
packets towards the host CPU interface (SYSTEMPORT), and we had to leave
the UniMAC RX enable bit on to allow matching MagicPackets.

Once we re-enter the resume function, there is a small window during
which the UniMAC receive is still enabled, and we start queueing
packets, but the RDMA and RBUF engines are not ready, which leads to
having packets stuck in the UniMAC RX FIFO, ultimately delivered towards
the host CPU as corrupted.

Fixes: 40755a0fce17 ("net: systemport: add suspend and resume support")
Signed-off-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&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>
commit 704d33e7006f20f9b4fa7d24a0f08c4b5919b131 upstream.

bcm_sysport_resume() was missing an UniMAC reset which can lead to
various receive FIFO corruptions coming out of a suspend cycle. If the
RX FIFO is stuck, it will deliver corrupted/duplicate packets towards
the host CPU interface.

This could be reproduced on crowded network and when Wake-on-LAN is
enabled for this particular interface because the switch still forwards
packets towards the host CPU interface (SYSTEMPORT), and we had to leave
the UniMAC RX enable bit on to allow matching MagicPackets.

Once we re-enter the resume function, there is a small window during
which the UniMAC receive is still enabled, and we start queueing
packets, but the RDMA and RBUF engines are not ready, which leads to
having packets stuck in the UniMAC RX FIFO, ultimately delivered towards
the host CPU as corrupted.

Fixes: 40755a0fce17 ("net: systemport: add suspend and resume support")
Signed-off-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>net: systemport: enable RX interrupts after NAPI</title>
<updated>2014-11-21T17:23:14+00:00</updated>
<author>
<name>Florian Fainelli</name>
<email>f.fainelli@gmail.com</email>
</author>
<published>2014-10-28T18:12:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=255294ceefc3ddea22669e8988195f382bd72ac6'/>
<id>255294ceefc3ddea22669e8988195f382bd72ac6</id>
<content type='text'>
commit 8edf0047f4b8e03d94ef88f5a7dec146cce03a06 upstream.

There is currently a small window during which the SYSTEMPORT adapter
enables its RX interrupts without having enabled its NAPI handler, which
can result in packets to be discarded during interface bringup.

A similar but more serious window exists in bcm_sysport_resume() during
which we can have the RDMA engine not fully prepared to receive packets
and yet having RX interrupts enabled.

Fix this my moving the RX interrupt enable down to
bcm_sysport_netif_start() after napi_enable() for the RX path is called,
which fixes both call sites: bcm_sysport_open() and
bcm_sysport_resume().

Fixes: b02e6d9ba7ad ("net: systemport: add bcm_sysport_netif_{enable,stop}")
Signed-off-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&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>
commit 8edf0047f4b8e03d94ef88f5a7dec146cce03a06 upstream.

There is currently a small window during which the SYSTEMPORT adapter
enables its RX interrupts without having enabled its NAPI handler, which
can result in packets to be discarded during interface bringup.

A similar but more serious window exists in bcm_sysport_resume() during
which we can have the RDMA engine not fully prepared to receive packets
and yet having RX interrupts enabled.

Fix this my moving the RX interrupt enable down to
bcm_sysport_netif_start() after napi_enable() for the RX path is called,
which fixes both call sites: bcm_sysport_open() and
bcm_sysport_resume().

Fixes: b02e6d9ba7ad ("net: systemport: add bcm_sysport_netif_{enable,stop}")
Signed-off-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>cxgb4 : Handle dcb enable correctly</title>
<updated>2014-11-21T17:23:14+00:00</updated>
<author>
<name>Anish Bhatt</name>
<email>anish@chelsio.com</email>
</author>
<published>2014-10-23T21:37:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=fd0994c5622130e3d06e274a3b399e76192944f0'/>
<id>fd0994c5622130e3d06e274a3b399e76192944f0</id>
<content type='text'>
commit 3bb062613b1ecbd0c388106f61344d699f7859ec upstream.

Disabling DCBx in firmware automatically enables DCBx for control via host
lldp agents. Wait for an explicit setstate call from an lldp agents to enable
 DCBx instead.

Fixes: 76bcb31efc06 ("cxgb4 : Add DCBx support codebase and dcbnl_ops")

Signed-off-by: Anish Bhatt &lt;anish@chelsio.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&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>
commit 3bb062613b1ecbd0c388106f61344d699f7859ec upstream.

Disabling DCBx in firmware automatically enables DCBx for control via host
lldp agents. Wait for an explicit setstate call from an lldp agents to enable
 DCBx instead.

Fixes: 76bcb31efc06 ("cxgb4 : Add DCBx support codebase and dcbnl_ops")

Signed-off-by: Anish Bhatt &lt;anish@chelsio.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>mac80211_hwsim: release driver when ieee80211_register_hw fails</title>
<updated>2014-11-21T17:23:10+00:00</updated>
<author>
<name>Junjie Mao</name>
<email>eternal.n08@gmail.com</email>
</author>
<published>2014-10-28T01:31:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=e9bc3ea125989e71add4969d6cbbb835935c3ff6'/>
<id>e9bc3ea125989e71add4969d6cbbb835935c3ff6</id>
<content type='text'>
commit 805dbe17d1c832ad341f14fae8cedf41b67ca6fa upstream.

The driver is not released when ieee80211_register_hw fails in
mac80211_hwsim_create_radio, leading to the access to the unregistered (and
possibly freed) device in platform_driver_unregister:

[    0.447547] mac80211_hwsim: ieee80211_register_hw failed (-2)
[    0.448292] ------------[ cut here ]------------
[    0.448854] WARNING: CPU: 0 PID: 1 at ../include/linux/kref.h:47 kobject_get+0x33/0x50()
[    0.449839] CPU: 0 PID: 1 Comm: swapper Not tainted 3.17.0-00001-gdd46990-dirty #2
[    0.450813] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
[    0.451512]  00000000 00000000 78025e38 7967c6c6 78025e68 7905e09b 7988b480 00000000
[    0.452579]  00000001 79887d62 0000002f 79170bb3 79170bb3 78397008 79ac9d74 00000001
[    0.453614]  78025e78 7905e15d 00000009 00000000 78025e84 79170bb3 78397000 78025e8c
[    0.454632] Call Trace:
[    0.454921]  [&lt;7967c6c6&gt;] dump_stack+0x16/0x18
[    0.455453]  [&lt;7905e09b&gt;] warn_slowpath_common+0x6b/0x90
[    0.456067]  [&lt;79170bb3&gt;] ? kobject_get+0x33/0x50
[    0.456612]  [&lt;79170bb3&gt;] ? kobject_get+0x33/0x50
[    0.457155]  [&lt;7905e15d&gt;] warn_slowpath_null+0x1d/0x20
[    0.457748]  [&lt;79170bb3&gt;] kobject_get+0x33/0x50
[    0.458274]  [&lt;7925824f&gt;] get_device+0xf/0x20
[    0.458779]  [&lt;7925b5cd&gt;] driver_detach+0x3d/0xa0
[    0.459331]  [&lt;7925a3ff&gt;] bus_remove_driver+0x8f/0xb0
[    0.459927]  [&lt;7925bf80&gt;] ? class_unregister+0x40/0x80
[    0.460660]  [&lt;7925bad7&gt;] driver_unregister+0x47/0x50
[    0.461248]  [&lt;7925c033&gt;] ? class_destroy+0x13/0x20
[    0.461824]  [&lt;7925d07b&gt;] platform_driver_unregister+0xb/0x10
[    0.462507]  [&lt;79b51ba0&gt;] init_mac80211_hwsim+0x3e8/0x3f9
[    0.463161]  [&lt;79b30c58&gt;] do_one_initcall+0x106/0x1a9
[    0.463758]  [&lt;79b517b8&gt;] ? if_spi_init_module+0xac/0xac
[    0.464393]  [&lt;79b517b8&gt;] ? if_spi_init_module+0xac/0xac
[    0.465001]  [&lt;79071935&gt;] ? parse_args+0x2f5/0x480
[    0.465569]  [&lt;7906b41e&gt;] ? __usermodehelper_set_disable_depth+0x3e/0x50
[    0.466345]  [&lt;79b30dd9&gt;] kernel_init_freeable+0xde/0x17d
[    0.466972]  [&lt;79b304d6&gt;] ? do_early_param+0x7a/0x7a
[    0.467546]  [&lt;79677b1b&gt;] kernel_init+0xb/0xe0
[    0.468072]  [&lt;79075f42&gt;] ? schedule_tail+0x12/0x40
[    0.468658]  [&lt;79686580&gt;] ret_from_kernel_thread+0x20/0x30
[    0.469303]  [&lt;79677b10&gt;] ? rest_init+0xc0/0xc0
[    0.469829] ---[ end trace ad8ac403ff8aef5c ]---
[    0.470509] ------------[ cut here ]------------
[    0.471047] WARNING: CPU: 0 PID: 1 at ../kernel/locking/lockdep.c:3161 __lock_acquire.isra.22+0x7aa/0xb00()
[    0.472163] DEBUG_LOCKS_WARN_ON(id &gt;= MAX_LOCKDEP_KEYS)
[    0.472774] CPU: 0 PID: 1 Comm: swapper Tainted: G        W      3.17.0-00001-gdd46990-dirty #2
[    0.473815] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
[    0.474492]  78025de0 78025de0 78025da0 7967c6c6 78025dd0 7905e09b 79888931 78025dfc
[    0.475515]  00000001 79888a93 00000c59 7907f33a 7907f33a 78028000 fffe9d09 00000000
[    0.476519]  78025de8 7905e10e 00000009 78025de0 79888931 78025dfc 78025e24 7907f33a
[    0.477523] Call Trace:
[    0.477821]  [&lt;7967c6c6&gt;] dump_stack+0x16/0x18
[    0.478352]  [&lt;7905e09b&gt;] warn_slowpath_common+0x6b/0x90
[    0.478976]  [&lt;7907f33a&gt;] ? __lock_acquire.isra.22+0x7aa/0xb00
[    0.479658]  [&lt;7907f33a&gt;] ? __lock_acquire.isra.22+0x7aa/0xb00
[    0.480417]  [&lt;7905e10e&gt;] warn_slowpath_fmt+0x2e/0x30
[    0.480479]  [&lt;7907f33a&gt;] __lock_acquire.isra.22+0x7aa/0xb00
[    0.480479]  [&lt;79078aa5&gt;] ? sched_clock_cpu+0xb5/0xf0
[    0.480479]  [&lt;7907fd06&gt;] lock_acquire+0x56/0x70
[    0.480479]  [&lt;7925b5e8&gt;] ? driver_detach+0x58/0xa0
[    0.480479]  [&lt;79682d11&gt;] mutex_lock_nested+0x61/0x2a0
[    0.480479]  [&lt;7925b5e8&gt;] ? driver_detach+0x58/0xa0
[    0.480479]  [&lt;7925b5e8&gt;] ? driver_detach+0x58/0xa0
[    0.480479]  [&lt;7925b5e8&gt;] driver_detach+0x58/0xa0
[    0.480479]  [&lt;7925a3ff&gt;] bus_remove_driver+0x8f/0xb0
[    0.480479]  [&lt;7925bf80&gt;] ? class_unregister+0x40/0x80
[    0.480479]  [&lt;7925bad7&gt;] driver_unregister+0x47/0x50
[    0.480479]  [&lt;7925c033&gt;] ? class_destroy+0x13/0x20
[    0.480479]  [&lt;7925d07b&gt;] platform_driver_unregister+0xb/0x10
[    0.480479]  [&lt;79b51ba0&gt;] init_mac80211_hwsim+0x3e8/0x3f9
[    0.480479]  [&lt;79b30c58&gt;] do_one_initcall+0x106/0x1a9
[    0.480479]  [&lt;79b517b8&gt;] ? if_spi_init_module+0xac/0xac
[    0.480479]  [&lt;79b517b8&gt;] ? if_spi_init_module+0xac/0xac
[    0.480479]  [&lt;79071935&gt;] ? parse_args+0x2f5/0x480
[    0.480479]  [&lt;7906b41e&gt;] ? __usermodehelper_set_disable_depth+0x3e/0x50
[    0.480479]  [&lt;79b30dd9&gt;] kernel_init_freeable+0xde/0x17d
[    0.480479]  [&lt;79b304d6&gt;] ? do_early_param+0x7a/0x7a
[    0.480479]  [&lt;79677b1b&gt;] kernel_init+0xb/0xe0
[    0.480479]  [&lt;79075f42&gt;] ? schedule_tail+0x12/0x40
[    0.480479]  [&lt;79686580&gt;] ret_from_kernel_thread+0x20/0x30
[    0.480479]  [&lt;79677b10&gt;] ? rest_init+0xc0/0xc0
[    0.480479] ---[ end trace ad8ac403ff8aef5d ]---
[    0.495478] BUG: unable to handle kernel paging request at 00200200
[    0.496257] IP: [&lt;79682de5&gt;] mutex_lock_nested+0x135/0x2a0
[    0.496923] *pde = 00000000
[    0.497290] Oops: 0002 [#1]
[    0.497653] CPU: 0 PID: 1 Comm: swapper Tainted: G        W      3.17.0-00001-gdd46990-dirty #2
[    0.498659] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
[    0.499321] task: 78028000 ti: 78024000 task.ti: 78024000
[    0.499955] EIP: 0060:[&lt;79682de5&gt;] EFLAGS: 00010097 CPU: 0
[    0.500620] EIP is at mutex_lock_nested+0x135/0x2a0
[    0.501145] EAX: 00200200 EBX: 78397434 ECX: 78397460 EDX: 78025e70
[    0.501816] ESI: 00000246 EDI: 78028000 EBP: 78025e8c ESP: 78025e54
[    0.502497]  DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
[    0.503076] CR0: 8005003b CR2: 00200200 CR3: 01b9d000 CR4: 00000690
[    0.503773] Stack:
[    0.503998]  00000000 00000001 00000000 7925b5e8 78397460 7925b5e8 78397474 78397460
[    0.504944]  00200200 11111111 78025e70 78397000 79ac9d74 00000001 78025ea0 7925b5e8
[    0.505451]  79ac9d74 fffffffe 00000001 78025ebc 7925a3ff 7a251398 78025ec8 7925bf80
[    0.505451] Call Trace:
[    0.505451]  [&lt;7925b5e8&gt;] ? driver_detach+0x58/0xa0
[    0.505451]  [&lt;7925b5e8&gt;] ? driver_detach+0x58/0xa0
[    0.505451]  [&lt;7925b5e8&gt;] driver_detach+0x58/0xa0
[    0.505451]  [&lt;7925a3ff&gt;] bus_remove_driver+0x8f/0xb0
[    0.505451]  [&lt;7925bf80&gt;] ? class_unregister+0x40/0x80
[    0.505451]  [&lt;7925bad7&gt;] driver_unregister+0x47/0x50
[    0.505451]  [&lt;7925c033&gt;] ? class_destroy+0x13/0x20
[    0.505451]  [&lt;7925d07b&gt;] platform_driver_unregister+0xb/0x10
[    0.505451]  [&lt;79b51ba0&gt;] init_mac80211_hwsim+0x3e8/0x3f9
[    0.505451]  [&lt;79b30c58&gt;] do_one_initcall+0x106/0x1a9
[    0.505451]  [&lt;79b517b8&gt;] ? if_spi_init_module+0xac/0xac
[    0.505451]  [&lt;79b517b8&gt;] ? if_spi_init_module+0xac/0xac
[    0.505451]  [&lt;79071935&gt;] ? parse_args+0x2f5/0x480
[    0.505451]  [&lt;7906b41e&gt;] ? __usermodehelper_set_disable_depth+0x3e/0x50
[    0.505451]  [&lt;79b30dd9&gt;] kernel_init_freeable+0xde/0x17d
[    0.505451]  [&lt;79b304d6&gt;] ? do_early_param+0x7a/0x7a
[    0.505451]  [&lt;79677b1b&gt;] kernel_init+0xb/0xe0
[    0.505451]  [&lt;79075f42&gt;] ? schedule_tail+0x12/0x40
[    0.505451]  [&lt;79686580&gt;] ret_from_kernel_thread+0x20/0x30
[    0.505451]  [&lt;79677b10&gt;] ? rest_init+0xc0/0xc0
[    0.505451] Code: 89 d8 e8 cf 9b 9f ff 8b 4f 04 8d 55 e4 89 d8 e8 72 9d 9f ff 8d 43 2c 89 c1 89 45 d8 8b 43 30 8d 55 e4 89 53 30 89 4d e4 89 45 e8 &lt;89&gt; 10 8b 55 dc 8b 45 e0 89 7d ec e8 db af 9f ff eb 11 90 31 c0
[    0.505451] EIP: [&lt;79682de5&gt;] mutex_lock_nested+0x135/0x2a0 SS:ESP 0068:78025e54
[    0.505451] CR2: 0000000000200200
[    0.505451] ---[ end trace ad8ac403ff8aef5e ]---
[    0.505451] Kernel panic - not syncing: Fatal exception

Fixes: 9ea927748ced ("mac80211_hwsim: Register and bind to driver")
Reported-by: Fengguang Wu &lt;fengguang.wu@intel.com&gt;
Signed-off-by: Junjie Mao &lt;eternal.n08@gmail.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.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>
commit 805dbe17d1c832ad341f14fae8cedf41b67ca6fa upstream.

The driver is not released when ieee80211_register_hw fails in
mac80211_hwsim_create_radio, leading to the access to the unregistered (and
possibly freed) device in platform_driver_unregister:

[    0.447547] mac80211_hwsim: ieee80211_register_hw failed (-2)
[    0.448292] ------------[ cut here ]------------
[    0.448854] WARNING: CPU: 0 PID: 1 at ../include/linux/kref.h:47 kobject_get+0x33/0x50()
[    0.449839] CPU: 0 PID: 1 Comm: swapper Not tainted 3.17.0-00001-gdd46990-dirty #2
[    0.450813] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
[    0.451512]  00000000 00000000 78025e38 7967c6c6 78025e68 7905e09b 7988b480 00000000
[    0.452579]  00000001 79887d62 0000002f 79170bb3 79170bb3 78397008 79ac9d74 00000001
[    0.453614]  78025e78 7905e15d 00000009 00000000 78025e84 79170bb3 78397000 78025e8c
[    0.454632] Call Trace:
[    0.454921]  [&lt;7967c6c6&gt;] dump_stack+0x16/0x18
[    0.455453]  [&lt;7905e09b&gt;] warn_slowpath_common+0x6b/0x90
[    0.456067]  [&lt;79170bb3&gt;] ? kobject_get+0x33/0x50
[    0.456612]  [&lt;79170bb3&gt;] ? kobject_get+0x33/0x50
[    0.457155]  [&lt;7905e15d&gt;] warn_slowpath_null+0x1d/0x20
[    0.457748]  [&lt;79170bb3&gt;] kobject_get+0x33/0x50
[    0.458274]  [&lt;7925824f&gt;] get_device+0xf/0x20
[    0.458779]  [&lt;7925b5cd&gt;] driver_detach+0x3d/0xa0
[    0.459331]  [&lt;7925a3ff&gt;] bus_remove_driver+0x8f/0xb0
[    0.459927]  [&lt;7925bf80&gt;] ? class_unregister+0x40/0x80
[    0.460660]  [&lt;7925bad7&gt;] driver_unregister+0x47/0x50
[    0.461248]  [&lt;7925c033&gt;] ? class_destroy+0x13/0x20
[    0.461824]  [&lt;7925d07b&gt;] platform_driver_unregister+0xb/0x10
[    0.462507]  [&lt;79b51ba0&gt;] init_mac80211_hwsim+0x3e8/0x3f9
[    0.463161]  [&lt;79b30c58&gt;] do_one_initcall+0x106/0x1a9
[    0.463758]  [&lt;79b517b8&gt;] ? if_spi_init_module+0xac/0xac
[    0.464393]  [&lt;79b517b8&gt;] ? if_spi_init_module+0xac/0xac
[    0.465001]  [&lt;79071935&gt;] ? parse_args+0x2f5/0x480
[    0.465569]  [&lt;7906b41e&gt;] ? __usermodehelper_set_disable_depth+0x3e/0x50
[    0.466345]  [&lt;79b30dd9&gt;] kernel_init_freeable+0xde/0x17d
[    0.466972]  [&lt;79b304d6&gt;] ? do_early_param+0x7a/0x7a
[    0.467546]  [&lt;79677b1b&gt;] kernel_init+0xb/0xe0
[    0.468072]  [&lt;79075f42&gt;] ? schedule_tail+0x12/0x40
[    0.468658]  [&lt;79686580&gt;] ret_from_kernel_thread+0x20/0x30
[    0.469303]  [&lt;79677b10&gt;] ? rest_init+0xc0/0xc0
[    0.469829] ---[ end trace ad8ac403ff8aef5c ]---
[    0.470509] ------------[ cut here ]------------
[    0.471047] WARNING: CPU: 0 PID: 1 at ../kernel/locking/lockdep.c:3161 __lock_acquire.isra.22+0x7aa/0xb00()
[    0.472163] DEBUG_LOCKS_WARN_ON(id &gt;= MAX_LOCKDEP_KEYS)
[    0.472774] CPU: 0 PID: 1 Comm: swapper Tainted: G        W      3.17.0-00001-gdd46990-dirty #2
[    0.473815] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
[    0.474492]  78025de0 78025de0 78025da0 7967c6c6 78025dd0 7905e09b 79888931 78025dfc
[    0.475515]  00000001 79888a93 00000c59 7907f33a 7907f33a 78028000 fffe9d09 00000000
[    0.476519]  78025de8 7905e10e 00000009 78025de0 79888931 78025dfc 78025e24 7907f33a
[    0.477523] Call Trace:
[    0.477821]  [&lt;7967c6c6&gt;] dump_stack+0x16/0x18
[    0.478352]  [&lt;7905e09b&gt;] warn_slowpath_common+0x6b/0x90
[    0.478976]  [&lt;7907f33a&gt;] ? __lock_acquire.isra.22+0x7aa/0xb00
[    0.479658]  [&lt;7907f33a&gt;] ? __lock_acquire.isra.22+0x7aa/0xb00
[    0.480417]  [&lt;7905e10e&gt;] warn_slowpath_fmt+0x2e/0x30
[    0.480479]  [&lt;7907f33a&gt;] __lock_acquire.isra.22+0x7aa/0xb00
[    0.480479]  [&lt;79078aa5&gt;] ? sched_clock_cpu+0xb5/0xf0
[    0.480479]  [&lt;7907fd06&gt;] lock_acquire+0x56/0x70
[    0.480479]  [&lt;7925b5e8&gt;] ? driver_detach+0x58/0xa0
[    0.480479]  [&lt;79682d11&gt;] mutex_lock_nested+0x61/0x2a0
[    0.480479]  [&lt;7925b5e8&gt;] ? driver_detach+0x58/0xa0
[    0.480479]  [&lt;7925b5e8&gt;] ? driver_detach+0x58/0xa0
[    0.480479]  [&lt;7925b5e8&gt;] driver_detach+0x58/0xa0
[    0.480479]  [&lt;7925a3ff&gt;] bus_remove_driver+0x8f/0xb0
[    0.480479]  [&lt;7925bf80&gt;] ? class_unregister+0x40/0x80
[    0.480479]  [&lt;7925bad7&gt;] driver_unregister+0x47/0x50
[    0.480479]  [&lt;7925c033&gt;] ? class_destroy+0x13/0x20
[    0.480479]  [&lt;7925d07b&gt;] platform_driver_unregister+0xb/0x10
[    0.480479]  [&lt;79b51ba0&gt;] init_mac80211_hwsim+0x3e8/0x3f9
[    0.480479]  [&lt;79b30c58&gt;] do_one_initcall+0x106/0x1a9
[    0.480479]  [&lt;79b517b8&gt;] ? if_spi_init_module+0xac/0xac
[    0.480479]  [&lt;79b517b8&gt;] ? if_spi_init_module+0xac/0xac
[    0.480479]  [&lt;79071935&gt;] ? parse_args+0x2f5/0x480
[    0.480479]  [&lt;7906b41e&gt;] ? __usermodehelper_set_disable_depth+0x3e/0x50
[    0.480479]  [&lt;79b30dd9&gt;] kernel_init_freeable+0xde/0x17d
[    0.480479]  [&lt;79b304d6&gt;] ? do_early_param+0x7a/0x7a
[    0.480479]  [&lt;79677b1b&gt;] kernel_init+0xb/0xe0
[    0.480479]  [&lt;79075f42&gt;] ? schedule_tail+0x12/0x40
[    0.480479]  [&lt;79686580&gt;] ret_from_kernel_thread+0x20/0x30
[    0.480479]  [&lt;79677b10&gt;] ? rest_init+0xc0/0xc0
[    0.480479] ---[ end trace ad8ac403ff8aef5d ]---
[    0.495478] BUG: unable to handle kernel paging request at 00200200
[    0.496257] IP: [&lt;79682de5&gt;] mutex_lock_nested+0x135/0x2a0
[    0.496923] *pde = 00000000
[    0.497290] Oops: 0002 [#1]
[    0.497653] CPU: 0 PID: 1 Comm: swapper Tainted: G        W      3.17.0-00001-gdd46990-dirty #2
[    0.498659] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
[    0.499321] task: 78028000 ti: 78024000 task.ti: 78024000
[    0.499955] EIP: 0060:[&lt;79682de5&gt;] EFLAGS: 00010097 CPU: 0
[    0.500620] EIP is at mutex_lock_nested+0x135/0x2a0
[    0.501145] EAX: 00200200 EBX: 78397434 ECX: 78397460 EDX: 78025e70
[    0.501816] ESI: 00000246 EDI: 78028000 EBP: 78025e8c ESP: 78025e54
[    0.502497]  DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
[    0.503076] CR0: 8005003b CR2: 00200200 CR3: 01b9d000 CR4: 00000690
[    0.503773] Stack:
[    0.503998]  00000000 00000001 00000000 7925b5e8 78397460 7925b5e8 78397474 78397460
[    0.504944]  00200200 11111111 78025e70 78397000 79ac9d74 00000001 78025ea0 7925b5e8
[    0.505451]  79ac9d74 fffffffe 00000001 78025ebc 7925a3ff 7a251398 78025ec8 7925bf80
[    0.505451] Call Trace:
[    0.505451]  [&lt;7925b5e8&gt;] ? driver_detach+0x58/0xa0
[    0.505451]  [&lt;7925b5e8&gt;] ? driver_detach+0x58/0xa0
[    0.505451]  [&lt;7925b5e8&gt;] driver_detach+0x58/0xa0
[    0.505451]  [&lt;7925a3ff&gt;] bus_remove_driver+0x8f/0xb0
[    0.505451]  [&lt;7925bf80&gt;] ? class_unregister+0x40/0x80
[    0.505451]  [&lt;7925bad7&gt;] driver_unregister+0x47/0x50
[    0.505451]  [&lt;7925c033&gt;] ? class_destroy+0x13/0x20
[    0.505451]  [&lt;7925d07b&gt;] platform_driver_unregister+0xb/0x10
[    0.505451]  [&lt;79b51ba0&gt;] init_mac80211_hwsim+0x3e8/0x3f9
[    0.505451]  [&lt;79b30c58&gt;] do_one_initcall+0x106/0x1a9
[    0.505451]  [&lt;79b517b8&gt;] ? if_spi_init_module+0xac/0xac
[    0.505451]  [&lt;79b517b8&gt;] ? if_spi_init_module+0xac/0xac
[    0.505451]  [&lt;79071935&gt;] ? parse_args+0x2f5/0x480
[    0.505451]  [&lt;7906b41e&gt;] ? __usermodehelper_set_disable_depth+0x3e/0x50
[    0.505451]  [&lt;79b30dd9&gt;] kernel_init_freeable+0xde/0x17d
[    0.505451]  [&lt;79b304d6&gt;] ? do_early_param+0x7a/0x7a
[    0.505451]  [&lt;79677b1b&gt;] kernel_init+0xb/0xe0
[    0.505451]  [&lt;79075f42&gt;] ? schedule_tail+0x12/0x40
[    0.505451]  [&lt;79686580&gt;] ret_from_kernel_thread+0x20/0x30
[    0.505451]  [&lt;79677b10&gt;] ? rest_init+0xc0/0xc0
[    0.505451] Code: 89 d8 e8 cf 9b 9f ff 8b 4f 04 8d 55 e4 89 d8 e8 72 9d 9f ff 8d 43 2c 89 c1 89 45 d8 8b 43 30 8d 55 e4 89 53 30 89 4d e4 89 45 e8 &lt;89&gt; 10 8b 55 dc 8b 45 e0 89 7d ec e8 db af 9f ff eb 11 90 31 c0
[    0.505451] EIP: [&lt;79682de5&gt;] mutex_lock_nested+0x135/0x2a0 SS:ESP 0068:78025e54
[    0.505451] CR2: 0000000000200200
[    0.505451] ---[ end trace ad8ac403ff8aef5e ]---
[    0.505451] Kernel panic - not syncing: Fatal exception

Fixes: 9ea927748ced ("mac80211_hwsim: Register and bind to driver")
Reported-by: Fengguang Wu &lt;fengguang.wu@intel.com&gt;
Signed-off-by: Junjie Mao &lt;eternal.n08@gmail.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>macvtap: Fix csum_start when VLAN tags are present</title>
<updated>2014-11-21T17:23:10+00:00</updated>
<author>
<name>Herbert Xu</name>
<email>herbert@gondor.apana.org.au</email>
</author>
<published>2014-11-03T06:01:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=bfd484b59830567c7bba16df4c376209371cf1a2'/>
<id>bfd484b59830567c7bba16df4c376209371cf1a2</id>
<content type='text'>
commit 3ce9b20f1971690b8b3b620e735ec99431573b39 upstream.

When VLAN is in use in macvtap_put_user, we end up setting
csum_start to the wrong place.  The result is that the whoever
ends up doing the checksum setting will corrupt the packet instead
of writing the checksum to the expected location, usually this
means writing the checksum with an offset of -4.

This patch fixes this by adjusting csum_start when VLAN tags are
detected.

Fixes: f09e2249c4f5 ("macvtap: restore vlan header on user read")
Signed-off-by: Herbert Xu &lt;herbert@gondor.apana.org.au&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.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>
commit 3ce9b20f1971690b8b3b620e735ec99431573b39 upstream.

When VLAN is in use in macvtap_put_user, we end up setting
csum_start to the wrong place.  The result is that the whoever
ends up doing the checksum setting will corrupt the packet instead
of writing the checksum to the expected location, usually this
means writing the checksum with an offset of -4.

This patch fixes this by adjusting csum_start when VLAN tags are
detected.

Fixes: f09e2249c4f5 ("macvtap: restore vlan header on user read")
Signed-off-by: Herbert Xu &lt;herbert@gondor.apana.org.au&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>tun: Fix csum_start with VLAN acceleration</title>
<updated>2014-11-21T17:23:09+00:00</updated>
<author>
<name>Herbert Xu</name>
<email>herbert@gondor.apana.org.au</email>
</author>
<published>2014-11-02T20:30:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=8241fcd56b40cac852b92b7c130e3047a686425b'/>
<id>8241fcd56b40cac852b92b7c130e3047a686425b</id>
<content type='text'>
commit a8f9bfdf982e2b1fb9f094e4de9ab08c57f3d2fd upstream.

When VLAN acceleration is in use on the xmit path, we end up
setting csum_start to the wrong place.  The result is that the
whoever ends up doing the checksum setting will corrupt the packet
instead of writing the checksum to the expected location, usually
this means writing the checksum with an offset of -4.

This patch fixes this by adjusting csum_start when VLAN acceleration
is detected.

Fixes: 6680ec68eff4 ("tuntap: hardware vlan tx support")
Signed-off-by: Herbert Xu &lt;herbert@gondor.apana.org.au&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&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>
commit a8f9bfdf982e2b1fb9f094e4de9ab08c57f3d2fd upstream.

When VLAN acceleration is in use on the xmit path, we end up
setting csum_start to the wrong place.  The result is that the
whoever ends up doing the checksum setting will corrupt the packet
instead of writing the checksum to the expected location, usually
this means writing the checksum with an offset of -4.

This patch fixes this by adjusting csum_start when VLAN acceleration
is detected.

Fixes: 6680ec68eff4 ("tuntap: hardware vlan tx support")
Signed-off-by: Herbert Xu &lt;herbert@gondor.apana.org.au&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>vio: fix reuse of vio_dring slot</title>
<updated>2014-11-21T17:23:08+00:00</updated>
<author>
<name>Dwight Engen</name>
<email>dwight.engen@oracle.com</email>
</author>
<published>2014-09-19T13:43:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=e5927eef9bb2b15ed1eab14598141f68c4893df1'/>
<id>e5927eef9bb2b15ed1eab14598141f68c4893df1</id>
<content type='text'>
[ Upstream commit d0aedcd4f14a22e23b313f42b7e6e6ebfc0fbc31 ]

vio_dring_avail() will allow use of every dring entry, but when the last
entry is allocated then dr-&gt;prod == dr-&gt;cons which is indistinguishable from
the ring empty condition. This causes the next allocation to reuse an entry.
When this happens in sunvdc, the server side vds driver begins nack'ing the
messages and ends up resetting the ldc channel. This problem does not effect
sunvnet since it checks for &lt; 2.

The fix here is to just never allocate the very last dring slot so that full
and empty are not the same condition. The request start path was changed to
check for the ring being full a bit earlier, and to stop the blk_queue if
there is no space left. The blk_queue will be restarted once the ring is
only half full again. The number of ring entries was increased to 512 which
matches the sunvnet and Solaris vdc drivers, and greatly reduces the
frequency of hitting the ring full condition and the associated blk_queue
stop/starting. The checks in sunvent were adjusted to account for
vio_dring_avail() returning 1 less.

Orabug: 19441666
OraBZ: 14983

Signed-off-by: Dwight Engen &lt;dwight.engen@oracle.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&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>
[ Upstream commit d0aedcd4f14a22e23b313f42b7e6e6ebfc0fbc31 ]

vio_dring_avail() will allow use of every dring entry, but when the last
entry is allocated then dr-&gt;prod == dr-&gt;cons which is indistinguishable from
the ring empty condition. This causes the next allocation to reuse an entry.
When this happens in sunvdc, the server side vds driver begins nack'ing the
messages and ends up resetting the ldc channel. This problem does not effect
sunvnet since it checks for &lt; 2.

The fix here is to just never allocate the very last dring slot so that full
and empty are not the same condition. The request start path was changed to
check for the ring being full a bit earlier, and to stop the blk_queue if
there is no space left. The blk_queue will be restarted once the ring is
only half full again. The number of ring entries was increased to 512 which
matches the sunvnet and Solaris vdc drivers, and greatly reduces the
frequency of hitting the ring full condition and the associated blk_queue
stop/starting. The checks in sunvent were adjusted to account for
vio_dring_avail() returning 1 less.

Orabug: 19441666
OraBZ: 14983

Signed-off-by: Dwight Engen &lt;dwight.engen@oracle.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>smsc911x: power-up phydev before doing a software reset.</title>
<updated>2014-11-21T17:23:08+00:00</updated>
<author>
<name>Enric Balletbo i Serra</name>
<email>eballetbo@iseebcn.com</email>
</author>
<published>2014-11-13T08:14:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=a54857a74cf6724a872217477fa5827d6b9d26c8'/>
<id>a54857a74cf6724a872217477fa5827d6b9d26c8</id>
<content type='text'>
[ Upstream commit ccf899a27c08038db91765ff12bb0380dcd85887 ]

With commit be9dad1f9f26604fb ("net: phy: suspend phydev when going
to HALTED"), the PHY device will be put in a low-power mode using
BMCR_PDOWN if the the interface is set down. The smsc911x driver does
a software_reset opening the device driver (ndo_open). In such case,
the PHY must be powered-up before access to any register and before
calling the software_reset function. Otherwise, as the PHY is powered
down the software reset fails and the interface can not be enabled
again.

This patch fixes this scenario that is easy to reproduce setting down
the network interface and setting up again.

    $ ifconfig eth0 down
    $ ifconfig eth0 up
    ifconfig: SIOCSIFFLAGS: Input/output error

Signed-off-by: Enric Balletbo i Serra &lt;eballetbo@iseebcn.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&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>
[ Upstream commit ccf899a27c08038db91765ff12bb0380dcd85887 ]

With commit be9dad1f9f26604fb ("net: phy: suspend phydev when going
to HALTED"), the PHY device will be put in a low-power mode using
BMCR_PDOWN if the the interface is set down. The smsc911x driver does
a software_reset opening the device driver (ndo_open). In such case,
the PHY must be powered-up before access to any register and before
calling the software_reset function. Otherwise, as the PHY is powered
down the software reset fails and the interface can not be enabled
again.

This patch fixes this scenario that is easy to reproduce setting down
the network interface and setting up again.

    $ ifconfig eth0 down
    $ ifconfig eth0 up
    ifconfig: SIOCSIFFLAGS: Input/output error

Signed-off-by: Enric Balletbo i Serra &lt;eballetbo@iseebcn.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: ptp: fix time stamp matching logic for VLAN packets.</title>
<updated>2014-11-21T17:23:07+00:00</updated>
<author>
<name>Richard Cochran</name>
<email>richardcochran@gmail.com</email>
</author>
<published>2014-11-12T10:33:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=2326ed5e88f6cecd1e03f7718eb11480f046d887'/>
<id>2326ed5e88f6cecd1e03f7718eb11480f046d887</id>
<content type='text'>
[ Upstream commit cca04b2854ecfb7cd1b8ee84ab38bc99af59f526 ]

Commit ae5c6c6d "ptp: Classify ptp over ip over vlan packets" changed the
code in two drivers that matches time stamps with PTP frames, with the goal
of allowing VLAN tagged PTP packets to receive hardware time stamps.

However, that commit failed to account for the VLAN header when parsing
IPv4 packets. This patch fixes those two drivers to correctly match VLAN
tagged IPv4/UDP PTP messages with their time stamps.

This patch should also be applied to v3.17.

Signed-off-by: Richard Cochran &lt;richardcochran@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&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>
[ Upstream commit cca04b2854ecfb7cd1b8ee84ab38bc99af59f526 ]

Commit ae5c6c6d "ptp: Classify ptp over ip over vlan packets" changed the
code in two drivers that matches time stamps with PTP frames, with the goal
of allowing VLAN tagged PTP packets to receive hardware time stamps.

However, that commit failed to account for the VLAN header when parsing
IPv4 packets. This patch fixes those two drivers to correctly match VLAN
tagged IPv4/UDP PTP messages with their time stamps.

This patch should also be applied to v3.17.

Signed-off-by: Richard Cochran &lt;richardcochran@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
