<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/net/wireless, branch v3.4.106</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>rt2x00: do not align payload on modern H/W</title>
<updated>2015-02-02T09:05:21+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2014-11-11T13:28:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=4c753f06b4e4b09f85fc2bb631bc5e3787bd16d0'/>
<id>4c753f06b4e4b09f85fc2bb631bc5e3787bd16d0</id>
<content type='text'>
commit cfd9167af14eb4ec21517a32911d460083ee3d59 upstream.

RT2800 and newer hardware require padding between header and payload if
header length is not multiple of 4.

For historical reasons we also align payload to to 4 bytes boundary, but
such alignment is not needed on modern H/W.

Patch fixes skb_under_panic problems reported from time to time:

https://bugzilla.kernel.org/show_bug.cgi?id=84911
https://bugzilla.kernel.org/show_bug.cgi?id=72471
http://marc.info/?l=linux-wireless&amp;m=139108549530402&amp;w=2
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1087591

Panic happened because we eat 4 bytes of skb headroom on each
(re)transmission when sending frame without the payload and the header
length not being multiple of 4 (i.e. QoS header has 26 bytes). On such
case because paylad_aling=2 is bigger than header_align=0 we increase
header_align by 4 bytes. To prevent that we could change the check to:

	if (payload_length &amp;&amp; payload_align &gt; header_align)
		header_align += 4;

but not aligning payload at all is more effective and alignment is not
really needed by H/W (that has been tested on OpenWrt project for few
years now).

Reported-and-tested-by: Antti S. Lankila &lt;alankila@bel.fi&gt;
Debugged-by: Antti S. Lankila &lt;alankila@bel.fi&gt;
Reported-by: Henrik Asp &lt;solenskiner@gmail.com&gt;
Originally-From: Helmut Schaa &lt;helmut.schaa@googlemail.com&gt;
Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Zefan Li &lt;lizefan@huawei.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit cfd9167af14eb4ec21517a32911d460083ee3d59 upstream.

RT2800 and newer hardware require padding between header and payload if
header length is not multiple of 4.

For historical reasons we also align payload to to 4 bytes boundary, but
such alignment is not needed on modern H/W.

Patch fixes skb_under_panic problems reported from time to time:

https://bugzilla.kernel.org/show_bug.cgi?id=84911
https://bugzilla.kernel.org/show_bug.cgi?id=72471
http://marc.info/?l=linux-wireless&amp;m=139108549530402&amp;w=2
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1087591

Panic happened because we eat 4 bytes of skb headroom on each
(re)transmission when sending frame without the payload and the header
length not being multiple of 4 (i.e. QoS header has 26 bytes). On such
case because paylad_aling=2 is bigger than header_align=0 we increase
header_align by 4 bytes. To prevent that we could change the check to:

	if (payload_length &amp;&amp; payload_align &gt; header_align)
		header_align += 4;

but not aligning payload at all is more effective and alignment is not
really needed by H/W (that has been tested on OpenWrt project for few
years now).

Reported-and-tested-by: Antti S. Lankila &lt;alankila@bel.fi&gt;
Debugged-by: Antti S. Lankila &lt;alankila@bel.fi&gt;
Reported-by: Henrik Asp &lt;solenskiner@gmail.com&gt;
Originally-From: Helmut Schaa &lt;helmut.schaa@googlemail.com&gt;
Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Zefan Li &lt;lizefan@huawei.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>wireless: rt2x00: add new rt2800usb device</title>
<updated>2015-02-02T09:05:08+00:00</updated>
<author>
<name>Cyril Brulebois</name>
<email>kibi@debian.org</email>
</author>
<published>2014-10-28T15:42:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=9813ed0b2d83b16206353134835a03af32701697'/>
<id>9813ed0b2d83b16206353134835a03af32701697</id>
<content type='text'>
commit 664d6a792785cc677c2091038ce10322c8d04ae1 upstream.

0x1b75 0xa200 AirLive WN-200USB wireless 11b/g/n dongle

References: https://bugs.debian.org/766802
Reported-by: Martin Mokrejs &lt;mmokrejs@fold.natur.cuni.cz&gt;
Signed-off-by: Cyril Brulebois &lt;kibi@debian.org&gt;
Acked-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Zefan Li &lt;lizefan@huawei.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 664d6a792785cc677c2091038ce10322c8d04ae1 upstream.

0x1b75 0xa200 AirLive WN-200USB wireless 11b/g/n dongle

References: https://bugs.debian.org/766802
Reported-by: Martin Mokrejs &lt;mmokrejs@fold.natur.cuni.cz&gt;
Signed-off-by: Cyril Brulebois &lt;kibi@debian.org&gt;
Acked-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Zefan Li &lt;lizefan@huawei.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2800: correct BBP1_TX_POWER_CTRL mask</title>
<updated>2015-02-02T09:04:43+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2014-09-24T09:24:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=bbb7a273be2cd8ea01fdb8c542c120ab2ffef6ad'/>
<id>bbb7a273be2cd8ea01fdb8c542c120ab2ffef6ad</id>
<content type='text'>
commit 01f7feeaf4528bec83798316b3c811701bac5d3e upstream.

Two bits control TX power on BBP_R1 register. Correct the mask,
otherwise we clear additional bit on BBP_R1 register, what can have
unknown, possible negative effect.

Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Zefan Li &lt;lizefan@huawei.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 01f7feeaf4528bec83798316b3c811701bac5d3e upstream.

Two bits control TX power on BBP_R1 register. Correct the mask,
otherwise we clear additional bit on BBP_R1 register, what can have
unknown, possible negative effect.

Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Zefan Li &lt;lizefan@huawei.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rtl8192ce: Fix null dereference in watchdog</title>
<updated>2014-12-01T10:02:44+00:00</updated>
<author>
<name>Ben Hutchings</name>
<email>ben@decadent.org.uk</email>
</author>
<published>2014-04-19T13:36:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=4b7f15c26a453b1aa19965d515476700b8faaa0e'/>
<id>4b7f15c26a453b1aa19965d515476700b8faaa0e</id>
<content type='text'>
Dmitry Semyonov reported that after upgrading from 3.2.54 to
3.2.57 the rtl8192ce driver will crash when its interface is brought
up.  The oops message shows:

[ 1833.611397] BUG: unable to handle kernel NULL pointer dereference at 0000000000000010
[ 1833.611455] IP: [&lt;ffffffffa0410c6a&gt;] rtl92ce_update_hal_rate_tbl+0x29/0x4db [rtl8192ce]
...
[ 1833.613326] Call Trace:
[ 1833.613346]  [&lt;ffffffffa02ad9c6&gt;] ? rtl92c_dm_watchdog+0xd0b/0xec9 [rtl8192c_common]
[ 1833.613391]  [&lt;ffffffff8105b5cf&gt;] ? process_one_work+0x161/0x269
[ 1833.613425]  [&lt;ffffffff8105c598&gt;] ? worker_thread+0xc2/0x145
[ 1833.613458]  [&lt;ffffffff8105c4d6&gt;] ? manage_workers.isra.25+0x15b/0x15b
[ 1833.613496]  [&lt;ffffffff8105f6d9&gt;] ? kthread+0x76/0x7e
[ 1833.613527]  [&lt;ffffffff81356b74&gt;] ? kernel_thread_helper+0x4/0x10
[ 1833.613563]  [&lt;ffffffff8105f663&gt;] ? kthread_worker_fn+0x139/0x139
[ 1833.613598]  [&lt;ffffffff81356b70&gt;] ? gs_change+0x13/0x13

Disassembly of rtl92ce_update_hal_rate_tbl() shows that the 'sta'
parameter was null.  None of the changes to the rtlwifi family between
3.2.54 and 3.2.57 seem to directly cause this, and reverting commit
f78bccd79ba3 ('rtlwifi: rtl8192ce: Fix too long disable of IRQs')
doesn't fix it.

rtl92c_dm_watchdog() calls rtl92ce_update_hal_rate_tbl() via
rtl92c_dm_refresh_rate_adaptive_mask(), which does not appear in the
call trace as it was inlined.  That function has been completely
removed upstream which may explain why this crash wasn't seen there.

I'm not sure that it is sensible to completely remove
rtl92c_dm_refresh_rate_adaptive_mask() without making other
compensating changes elsewhere, so try to work around this for 3.2 by
checking for a null pointer in rtl92c_dm_refresh_rate_adaptive_mask()
and then skipping the call to rtl92ce_update_hal_rate_tbl().

References: https://bugs.debian.org/745137
References: https://bugs.debian.org/745462
Reported-by: Dmitry Semyonov &lt;linulin@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
Cc: Larry Finger &lt;Larry.Finger@lwfinger.net&gt;
Cc: Chaoming Li &lt;chaoming_li@realsil.com.cn&gt;
Cc: Satoshi IWAMOTO &lt;satoshi.iwamoto@nifty.ne.jp&gt;
Signed-off-by: Zefan Li &lt;lizefan@huawei.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Dmitry Semyonov reported that after upgrading from 3.2.54 to
3.2.57 the rtl8192ce driver will crash when its interface is brought
up.  The oops message shows:

[ 1833.611397] BUG: unable to handle kernel NULL pointer dereference at 0000000000000010
[ 1833.611455] IP: [&lt;ffffffffa0410c6a&gt;] rtl92ce_update_hal_rate_tbl+0x29/0x4db [rtl8192ce]
...
[ 1833.613326] Call Trace:
[ 1833.613346]  [&lt;ffffffffa02ad9c6&gt;] ? rtl92c_dm_watchdog+0xd0b/0xec9 [rtl8192c_common]
[ 1833.613391]  [&lt;ffffffff8105b5cf&gt;] ? process_one_work+0x161/0x269
[ 1833.613425]  [&lt;ffffffff8105c598&gt;] ? worker_thread+0xc2/0x145
[ 1833.613458]  [&lt;ffffffff8105c4d6&gt;] ? manage_workers.isra.25+0x15b/0x15b
[ 1833.613496]  [&lt;ffffffff8105f6d9&gt;] ? kthread+0x76/0x7e
[ 1833.613527]  [&lt;ffffffff81356b74&gt;] ? kernel_thread_helper+0x4/0x10
[ 1833.613563]  [&lt;ffffffff8105f663&gt;] ? kthread_worker_fn+0x139/0x139
[ 1833.613598]  [&lt;ffffffff81356b70&gt;] ? gs_change+0x13/0x13

Disassembly of rtl92ce_update_hal_rate_tbl() shows that the 'sta'
parameter was null.  None of the changes to the rtlwifi family between
3.2.54 and 3.2.57 seem to directly cause this, and reverting commit
f78bccd79ba3 ('rtlwifi: rtl8192ce: Fix too long disable of IRQs')
doesn't fix it.

rtl92c_dm_watchdog() calls rtl92ce_update_hal_rate_tbl() via
rtl92c_dm_refresh_rate_adaptive_mask(), which does not appear in the
call trace as it was inlined.  That function has been completely
removed upstream which may explain why this crash wasn't seen there.

I'm not sure that it is sensible to completely remove
rtl92c_dm_refresh_rate_adaptive_mask() without making other
compensating changes elsewhere, so try to work around this for 3.2 by
checking for a null pointer in rtl92c_dm_refresh_rate_adaptive_mask()
and then skipping the call to rtl92ce_update_hal_rate_tbl().

References: https://bugs.debian.org/745137
References: https://bugs.debian.org/745462
Reported-by: Dmitry Semyonov &lt;linulin@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
Cc: Larry Finger &lt;Larry.Finger@lwfinger.net&gt;
Cc: Chaoming Li &lt;chaoming_li@realsil.com.cn&gt;
Cc: Satoshi IWAMOTO &lt;satoshi.iwamoto@nifty.ne.jp&gt;
Signed-off-by: Zefan Li &lt;lizefan@huawei.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rtlwifi: rtl8192cu: Add new ID</title>
<updated>2014-12-01T10:02:23+00:00</updated>
<author>
<name>Larry Finger</name>
<email>Larry.Finger@lwfinger.net</email>
</author>
<published>2014-08-24T22:49:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=69dfe16b2bfb488a4b8bb5dadbf3706e82893c85'/>
<id>69dfe16b2bfb488a4b8bb5dadbf3706e82893c85</id>
<content type='text'>
commit c66517165610b911e4c6d268f28d8c640832dbd1 upstream.

The Sitecom WLA-2102 adapter uses this driver.

Reported-by: Nico Baggus &lt;nico-linux@noci.xs4all.nl&gt;
Signed-off-by: Larry Finger &lt;Larry.Finger@lwfinger.net&gt;
Cc: Nico Baggus &lt;nico-linux@noci.xs4all.nl&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Zefan Li &lt;lizefan@huawei.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit c66517165610b911e4c6d268f28d8c640832dbd1 upstream.

The Sitecom WLA-2102 adapter uses this driver.

Reported-by: Nico Baggus &lt;nico-linux@noci.xs4all.nl&gt;
Signed-off-by: Larry Finger &lt;Larry.Finger@lwfinger.net&gt;
Cc: Nico Baggus &lt;nico-linux@noci.xs4all.nl&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Zefan Li &lt;lizefan@huawei.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mwifiex: fix Tx timeout issue</title>
<updated>2014-07-28T14:06:46+00:00</updated>
<author>
<name>Amitkumar Karwar</name>
<email>akarwar@marvell.com</email>
</author>
<published>2014-06-20T18:45:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=ed379762fda2d66dd4907035c79467daafe7d70b'/>
<id>ed379762fda2d66dd4907035c79467daafe7d70b</id>
<content type='text'>
commit d76744a93246eccdca1106037e8ee29debf48277 upstream.

https://bugzilla.kernel.org/show_bug.cgi?id=70191
https://bugzilla.kernel.org/show_bug.cgi?id=77581

It is observed that sometimes Tx packet is downloaded without
adding driver's txpd header. This results in firmware parsing
garbage data as packet length. Sometimes firmware is unable
to read the packet if length comes out as invalid. This stops
further traffic and timeout occurs.

The root cause is uninitialized fields in tx_info(skb-&gt;cb) of
packet used to get garbage values. In this case if
MWIFIEX_BUF_FLAG_REQUEUED_PKT flag is mistakenly set, txpd
header was skipped. This patch makes sure that tx_info is
correctly initialized to fix the problem.

Reported-by: Andrew Wiley &lt;wiley.andrew.j@gmail.com&gt;
Reported-by: Linus Gasser &lt;list@markas-al-nour.org&gt;
Reported-by: Michael Hirsch &lt;hirsch@teufel.de&gt;
Tested-by: Xinming Hu &lt;huxm@marvell.com&gt;
Signed-off-by: Amitkumar Karwar &lt;akarwar@marvell.com&gt;
Signed-off-by: Maithili Hinge &lt;maithili@marvell.com&gt;
Signed-off-by: Avinash Patil &lt;patila@marvell.com&gt;
Signed-off-by: Bing Zhao &lt;bzhao@marvell.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.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 d76744a93246eccdca1106037e8ee29debf48277 upstream.

https://bugzilla.kernel.org/show_bug.cgi?id=70191
https://bugzilla.kernel.org/show_bug.cgi?id=77581

It is observed that sometimes Tx packet is downloaded without
adding driver's txpd header. This results in firmware parsing
garbage data as packet length. Sometimes firmware is unable
to read the packet if length comes out as invalid. This stops
further traffic and timeout occurs.

The root cause is uninitialized fields in tx_info(skb-&gt;cb) of
packet used to get garbage values. In this case if
MWIFIEX_BUF_FLAG_REQUEUED_PKT flag is mistakenly set, txpd
header was skipped. This patch makes sure that tx_info is
correctly initialized to fix the problem.

Reported-by: Andrew Wiley &lt;wiley.andrew.j@gmail.com&gt;
Reported-by: Linus Gasser &lt;list@markas-al-nour.org&gt;
Reported-by: Michael Hirsch &lt;hirsch@teufel.de&gt;
Tested-by: Xinming Hu &lt;huxm@marvell.com&gt;
Signed-off-by: Amitkumar Karwar &lt;akarwar@marvell.com&gt;
Signed-off-by: Maithili Hinge &lt;maithili@marvell.com&gt;
Signed-off-by: Avinash Patil &lt;patila@marvell.com&gt;
Signed-off-by: Bing Zhao &lt;bzhao@marvell.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>b43: fix frequency reported on G-PHY with /new/ firmware</title>
<updated>2014-07-09T17:51:20+00:00</updated>
<author>
<name>Rafał Miłecki</name>
<email>zajec5@gmail.com</email>
</author>
<published>2014-06-12T20:28:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=74be85d10748a196626d8c0e531c75c11d26ad95'/>
<id>74be85d10748a196626d8c0e531c75c11d26ad95</id>
<content type='text'>
commit 2fc68eb122c7ea6cd5be1fe7d6650c0beb2f4f40 upstream.

Support for firmware rev 508+ was added years ago, but we never noticed
it reports channel in a different way for G-PHY devices. Instead of
offset from 2400 MHz it simply passes channel id (AKA hw_value).

So far it was (most probably) affecting monitor mode users only, but
the following recent commit made it noticeable for quite everybody:

commit 3afc2167f60a327a2c1e1e2600ef209a3c2b75b7
Author: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Date:   Tue Mar 4 16:50:13 2014 +0200

    cfg80211/mac80211: ignore signal if the frame was heard on wrong channel

Reported-by: Aaro Koskinen &lt;aaro.koskinen@iki.fi&gt;
Signed-off-by: Rafał Miłecki &lt;zajec5@gmail.com&gt;
Tested-by: Aaro Koskinen &lt;aaro.koskinen@iki.fi&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.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 2fc68eb122c7ea6cd5be1fe7d6650c0beb2f4f40 upstream.

Support for firmware rev 508+ was added years ago, but we never noticed
it reports channel in a different way for G-PHY devices. Instead of
offset from 2400 MHz it simply passes channel id (AKA hw_value).

So far it was (most probably) affecting monitor mode users only, but
the following recent commit made it noticeable for quite everybody:

commit 3afc2167f60a327a2c1e1e2600ef209a3c2b75b7
Author: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Date:   Tue Mar 4 16:50:13 2014 +0200

    cfg80211/mac80211: ignore signal if the frame was heard on wrong channel

Reported-by: Aaro Koskinen &lt;aaro.koskinen@iki.fi&gt;
Signed-off-by: Rafał Miłecki &lt;zajec5@gmail.com&gt;
Tested-by: Aaro Koskinen &lt;aaro.koskinen@iki.fi&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: fix rfkill regression on rt2500pci</title>
<updated>2014-07-09T17:51:20+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>stf_xl@wp.pl</email>
</author>
<published>2014-06-16T16:45:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=53a7d50b755b1a71b0cfcebe22fa9175149d9d52'/>
<id>53a7d50b755b1a71b0cfcebe22fa9175149d9d52</id>
<content type='text'>
commit 616a8394b5df8c88f4dd416f4527439a4e365034 upstream.

As reported by Niels, starting rfkill polling during device probe
(commit e2bc7c5, generally sane change) broke rfkill on rt2500pci
device. I considered that bug as some initalization issue, which
should be fixed on rt2500pci specific code. But after several
attempts (see bug report for details) we fail to find working solution.
Hence I decided to revert to old behaviour on rt2500pci to fix
regression.

Additionally patch also unregister rfkill on device remove instead
of ifconfig down, what was another issue introduced by bad commit.

Bug report:
https://bugzilla.kernel.org/show_bug.cgi?id=73821

Fixes: e2bc7c5f3cb8 ("rt2x00: Fix rfkill_polling register function.")
Bisected-by: Niels &lt;nille0386@googlemail.com&gt;
Reported-and-tested-by: Niels &lt;nille0386@googlemail.com&gt;
Signed-off-by: Stanislaw Gruszka &lt;stf_xl@wp.pl&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.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 616a8394b5df8c88f4dd416f4527439a4e365034 upstream.

As reported by Niels, starting rfkill polling during device probe
(commit e2bc7c5, generally sane change) broke rfkill on rt2500pci
device. I considered that bug as some initalization issue, which
should be fixed on rt2500pci specific code. But after several
attempts (see bug report for details) we fail to find working solution.
Hence I decided to revert to old behaviour on rt2500pci to fix
regression.

Additionally patch also unregister rfkill on device remove instead
of ifconfig down, what was another issue introduced by bad commit.

Bug report:
https://bugzilla.kernel.org/show_bug.cgi?id=73821

Fixes: e2bc7c5f3cb8 ("rt2x00: Fix rfkill_polling register function.")
Bisected-by: Niels &lt;nille0386@googlemail.com&gt;
Reported-and-tested-by: Niels &lt;nille0386@googlemail.com&gt;
Signed-off-by: Stanislaw Gruszka &lt;stf_xl@wp.pl&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: disable TKIP on USB</title>
<updated>2014-07-09T17:51:20+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2014-06-10T10:51:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=2160caddb9166f02b0ea73b220aaa5df0a51db91'/>
<id>2160caddb9166f02b0ea73b220aaa5df0a51db91</id>
<content type='text'>
commit 8edcb0ba0d56f5914eef11eda6db8bfe74eb9ca8 upstream.

On USB we can not get atomically TKIP key. We have to disable support
for TKIP acceleration on USB hardware to avoid bug as showed bellow.

[  860.827243] BUG: scheduling while atomic: hostapd/3397/0x00000002
&lt;snip&gt;
[  860.827280] Call Trace:
[  860.827282]  [&lt;ffffffff81682ea6&gt;] dump_stack+0x4d/0x66
[  860.827284]  [&lt;ffffffff8167eb9b&gt;] __schedule_bug+0x47/0x55
[  860.827285]  [&lt;ffffffff81685bb3&gt;] __schedule+0x733/0x7b0
[  860.827287]  [&lt;ffffffff81685c59&gt;] schedule+0x29/0x70
[  860.827289]  [&lt;ffffffff81684f8a&gt;] schedule_timeout+0x15a/0x2b0
[  860.827291]  [&lt;ffffffff8105ac50&gt;] ? ftrace_raw_event_tick_stop+0xc0/0xc0
[  860.827294]  [&lt;ffffffff810c13c2&gt;] ? __module_text_address+0x12/0x70
[  860.827296]  [&lt;ffffffff81686823&gt;] wait_for_completion_timeout+0xb3/0x140
[  860.827298]  [&lt;ffffffff81080fc0&gt;] ? wake_up_state+0x20/0x20
[  860.827301]  [&lt;ffffffff814d5b3d&gt;] usb_start_wait_urb+0x7d/0x150
[  860.827303]  [&lt;ffffffff814d5cd5&gt;] usb_control_msg+0xc5/0x110
[  860.827305]  [&lt;ffffffffa02fb0c6&gt;] rt2x00usb_vendor_request+0xc6/0x160  [rt2x00usb]
[  860.827307]  [&lt;ffffffffa02fb215&gt;] rt2x00usb_vendor_req_buff_lock+0x75/0x150 [rt2x00usb]
[  860.827309]  [&lt;ffffffffa02fb393&gt;] rt2x00usb_vendor_request_buff+0xa3/0xe0 [rt2x00usb]
[  860.827311]  [&lt;ffffffffa023d1a3&gt;] rt2x00usb_register_multiread+0x33/0x40 [rt2800usb]
[  860.827314]  [&lt;ffffffffa05805f9&gt;] rt2800_get_tkip_seq+0x39/0x50  [rt2800lib]
[  860.827321]  [&lt;ffffffffa0480f88&gt;] ieee80211_get_key+0x218/0x2a0  [mac80211]
[  860.827322]  [&lt;ffffffff815cc68c&gt;] ? __nlmsg_put+0x6c/0x80
[  860.827329]  [&lt;ffffffffa051b02e&gt;] nl80211_get_key+0x22e/0x360 [cfg80211]

Reported-and-tested-by: Peter Wu &lt;lekensteyn@gmail.com&gt;
Reported-and-tested-by: Pontus Fuchs &lt;pontus.fuchs@gmail.com&gt;
Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.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 8edcb0ba0d56f5914eef11eda6db8bfe74eb9ca8 upstream.

On USB we can not get atomically TKIP key. We have to disable support
for TKIP acceleration on USB hardware to avoid bug as showed bellow.

[  860.827243] BUG: scheduling while atomic: hostapd/3397/0x00000002
&lt;snip&gt;
[  860.827280] Call Trace:
[  860.827282]  [&lt;ffffffff81682ea6&gt;] dump_stack+0x4d/0x66
[  860.827284]  [&lt;ffffffff8167eb9b&gt;] __schedule_bug+0x47/0x55
[  860.827285]  [&lt;ffffffff81685bb3&gt;] __schedule+0x733/0x7b0
[  860.827287]  [&lt;ffffffff81685c59&gt;] schedule+0x29/0x70
[  860.827289]  [&lt;ffffffff81684f8a&gt;] schedule_timeout+0x15a/0x2b0
[  860.827291]  [&lt;ffffffff8105ac50&gt;] ? ftrace_raw_event_tick_stop+0xc0/0xc0
[  860.827294]  [&lt;ffffffff810c13c2&gt;] ? __module_text_address+0x12/0x70
[  860.827296]  [&lt;ffffffff81686823&gt;] wait_for_completion_timeout+0xb3/0x140
[  860.827298]  [&lt;ffffffff81080fc0&gt;] ? wake_up_state+0x20/0x20
[  860.827301]  [&lt;ffffffff814d5b3d&gt;] usb_start_wait_urb+0x7d/0x150
[  860.827303]  [&lt;ffffffff814d5cd5&gt;] usb_control_msg+0xc5/0x110
[  860.827305]  [&lt;ffffffffa02fb0c6&gt;] rt2x00usb_vendor_request+0xc6/0x160  [rt2x00usb]
[  860.827307]  [&lt;ffffffffa02fb215&gt;] rt2x00usb_vendor_req_buff_lock+0x75/0x150 [rt2x00usb]
[  860.827309]  [&lt;ffffffffa02fb393&gt;] rt2x00usb_vendor_request_buff+0xa3/0xe0 [rt2x00usb]
[  860.827311]  [&lt;ffffffffa023d1a3&gt;] rt2x00usb_register_multiread+0x33/0x40 [rt2800usb]
[  860.827314]  [&lt;ffffffffa05805f9&gt;] rt2800_get_tkip_seq+0x39/0x50  [rt2800lib]
[  860.827321]  [&lt;ffffffffa0480f88&gt;] ieee80211_get_key+0x218/0x2a0  [mac80211]
[  860.827322]  [&lt;ffffffff815cc68c&gt;] ? __nlmsg_put+0x6c/0x80
[  860.827329]  [&lt;ffffffffa051b02e&gt;] nl80211_get_key+0x22e/0x360 [cfg80211]

Reported-and-tested-by: Peter Wu &lt;lekensteyn@gmail.com&gt;
Reported-and-tested-by: Pontus Fuchs &lt;pontus.fuchs@gmail.com&gt;
Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>ath9k: protect tid-&gt;sched check</title>
<updated>2014-06-07T23:02:16+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2014-02-19T12:15:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=c6f9d698ffd5cfbb941177bec02b43542c748d77'/>
<id>c6f9d698ffd5cfbb941177bec02b43542c748d77</id>
<content type='text'>
commit 21f8aaee0c62708654988ce092838aa7df4d25d8 upstream.

We check tid-&gt;sched without a lock taken on ath_tx_aggr_sleep(). That
is race condition which can result of doing list_del(&amp;tid-&gt;list) twice
(second time with poisoned list node) and cause crash like shown below:

[424271.637220] BUG: unable to handle kernel paging request at 00100104
[424271.637328] IP: [&lt;f90fc072&gt;] ath_tx_aggr_sleep+0x62/0xe0 [ath9k]
...
[424271.639953] Call Trace:
[424271.639998]  [&lt;f90f6900&gt;] ? ath9k_get_survey+0x110/0x110 [ath9k]
[424271.640083]  [&lt;f90f6942&gt;] ath9k_sta_notify+0x42/0x50 [ath9k]
[424271.640177]  [&lt;f809cfef&gt;] sta_ps_start+0x8f/0x1c0 [mac80211]
[424271.640258]  [&lt;c10f730e&gt;] ? free_compound_page+0x2e/0x40
[424271.640346]  [&lt;f809e915&gt;] ieee80211_rx_handlers+0x9d5/0x2340 [mac80211]
[424271.640437]  [&lt;c112f048&gt;] ? kmem_cache_free+0x1d8/0x1f0
[424271.640510]  [&lt;c1345a84&gt;] ? kfree_skbmem+0x34/0x90
[424271.640578]  [&lt;c10fc23c&gt;] ? put_page+0x2c/0x40
[424271.640640]  [&lt;c1345a84&gt;] ? kfree_skbmem+0x34/0x90
[424271.640706]  [&lt;c1345a84&gt;] ? kfree_skbmem+0x34/0x90
[424271.640787]  [&lt;f809dde3&gt;] ? ieee80211_rx_handlers_result+0x73/0x1d0 [mac80211]
[424271.640897]  [&lt;f80a07a0&gt;] ieee80211_prepare_and_rx_handle+0x520/0xad0 [mac80211]
[424271.641009]  [&lt;f809e22d&gt;] ? ieee80211_rx_handlers+0x2ed/0x2340 [mac80211]
[424271.641104]  [&lt;c13846ce&gt;] ? ip_output+0x7e/0xd0
[424271.641182]  [&lt;f80a1057&gt;] ieee80211_rx+0x307/0x7c0 [mac80211]
[424271.641266]  [&lt;f90fa6ee&gt;] ath_rx_tasklet+0x88e/0xf70 [ath9k]
[424271.641358]  [&lt;f80a0f2c&gt;] ? ieee80211_rx+0x1dc/0x7c0 [mac80211]
[424271.641445]  [&lt;f90f82db&gt;] ath9k_tasklet+0xcb/0x130 [ath9k]

Bug report:
https://bugzilla.kernel.org/show_bug.cgi?id=70551

Reported-and-tested-by: Max Sydorenko &lt;maxim.stargazer@gmail.com&gt;
Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
[bwh: Backported to 3.2:
 - Adjust context
 - Use spin_unlock_bh() directly]
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
[gkh: backported to 3.4:
 - adjust context
 - back out bwh's spinlock change]
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 21f8aaee0c62708654988ce092838aa7df4d25d8 upstream.

We check tid-&gt;sched without a lock taken on ath_tx_aggr_sleep(). That
is race condition which can result of doing list_del(&amp;tid-&gt;list) twice
(second time with poisoned list node) and cause crash like shown below:

[424271.637220] BUG: unable to handle kernel paging request at 00100104
[424271.637328] IP: [&lt;f90fc072&gt;] ath_tx_aggr_sleep+0x62/0xe0 [ath9k]
...
[424271.639953] Call Trace:
[424271.639998]  [&lt;f90f6900&gt;] ? ath9k_get_survey+0x110/0x110 [ath9k]
[424271.640083]  [&lt;f90f6942&gt;] ath9k_sta_notify+0x42/0x50 [ath9k]
[424271.640177]  [&lt;f809cfef&gt;] sta_ps_start+0x8f/0x1c0 [mac80211]
[424271.640258]  [&lt;c10f730e&gt;] ? free_compound_page+0x2e/0x40
[424271.640346]  [&lt;f809e915&gt;] ieee80211_rx_handlers+0x9d5/0x2340 [mac80211]
[424271.640437]  [&lt;c112f048&gt;] ? kmem_cache_free+0x1d8/0x1f0
[424271.640510]  [&lt;c1345a84&gt;] ? kfree_skbmem+0x34/0x90
[424271.640578]  [&lt;c10fc23c&gt;] ? put_page+0x2c/0x40
[424271.640640]  [&lt;c1345a84&gt;] ? kfree_skbmem+0x34/0x90
[424271.640706]  [&lt;c1345a84&gt;] ? kfree_skbmem+0x34/0x90
[424271.640787]  [&lt;f809dde3&gt;] ? ieee80211_rx_handlers_result+0x73/0x1d0 [mac80211]
[424271.640897]  [&lt;f80a07a0&gt;] ieee80211_prepare_and_rx_handle+0x520/0xad0 [mac80211]
[424271.641009]  [&lt;f809e22d&gt;] ? ieee80211_rx_handlers+0x2ed/0x2340 [mac80211]
[424271.641104]  [&lt;c13846ce&gt;] ? ip_output+0x7e/0xd0
[424271.641182]  [&lt;f80a1057&gt;] ieee80211_rx+0x307/0x7c0 [mac80211]
[424271.641266]  [&lt;f90fa6ee&gt;] ath_rx_tasklet+0x88e/0xf70 [ath9k]
[424271.641358]  [&lt;f80a0f2c&gt;] ? ieee80211_rx+0x1dc/0x7c0 [mac80211]
[424271.641445]  [&lt;f90f82db&gt;] ath9k_tasklet+0xcb/0x130 [ath9k]

Bug report:
https://bugzilla.kernel.org/show_bug.cgi?id=70551

Reported-and-tested-by: Max Sydorenko &lt;maxim.stargazer@gmail.com&gt;
Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
[bwh: Backported to 3.2:
 - Adjust context
 - Use spin_unlock_bh() directly]
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
[gkh: backported to 3.4:
 - adjust context
 - back out bwh's spinlock change]
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
