<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/git/stable/linux.git/net/mac80211, branch linux-2.6.30.y</title>
<subtitle>Linux kernel stable tree</subtitle>
<id>https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/atom?h=linux-2.6.30.y</id>
<link rel='self' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/atom?h=linux-2.6.30.y'/>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/'/>
<updated>2009-09-09T03:33:18+00:00</updated>
<entry>
<title>mac80211: fix panic when splicing unprepared TIDs</title>
<updated>2009-09-09T03:33:18+00:00</updated>
<author>
<name>Luis R. Rodriguez</name>
<email>lrodriguez@atheros.com</email>
</author>
<published>2009-08-11T20:10:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=8eea73b35d71b7f8d839150f86ce7df66427ec4f'/>
<id>urn:sha1:8eea73b35d71b7f8d839150f86ce7df66427ec4f</id>
<content type='text'>
commit 416fbdff2137e8d8cc8f23f517bee3a26b11526f upstream.

We splice skbs from the pending queue for a TID
onto the local pending queue when tearing down a
block ack request. This is not necessary unless we
actually have received a request to start a block ack
request (rate control, for example). If we never received
that request we should not be splicing the tid pending
queue as it would be null, causing a panic.

Not sure yet how exactly we allowed through a call when the
tid state does not have at least HT_ADDBA_REQUESTED_MSK set,
that will require some further review as it is not quite
obvious.

For more information see the bug report:

http://bugzilla.kernel.org/show_bug.cgi?id=13922

This fixes this oops:

BUG: unable to handle kernel NULL pointer dereference at 00000030
IP: [&lt;f8806c70&gt;] ieee80211_agg_splice_packets+0x40/0xc0 [mac80211]
*pdpt = 0000000002d1e001 *pde = 0000000000000000
Thread overran stack, or stack corrupted
Oops: 0000 [#1] SMP
last sysfs file: /sys/module/aes_generic/initstate
Modules linked in: &lt;bleh&gt;

Pid: 0, comm: swapper Not tainted (2.6.31-rc5-wl #2) Dell DV051
EIP: 0060:[&lt;f8806c70&gt;] EFLAGS: 00010292 CPU: 0
EIP is at ieee80211_agg_splice_packets+0x40/0xc0 [mac80211]
EAX: 00000030 EBX: 0000004c ECX: 00000003 EDX: 00000000
ESI: c1c98000 EDI: f745a1c0 EBP: c076be58 ESP: c076be38
 DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
Process swapper (pid: 0, ti=c076a000 task=c0709160 task.ti=c076a000)
Stack: &lt;bleh2&gt;
Call Trace:
 [&lt;f8806edb&gt;] ? ieee80211_stop_tx_ba_cb+0xab/0x150 [mac80211]
 [&lt;f8802f1e&gt;] ? ieee80211_tasklet_handler+0xce/0x110 [mac80211]
 [&lt;c04862ff&gt;] ? net_rx_action+0xef/0x1d0
 [&lt;c0149378&gt;] ? tasklet_action+0x58/0xc0
 [&lt;c014a0f2&gt;] ? __do_softirq+0xc2/0x190
 [&lt;c018eb48&gt;] ? handle_IRQ_event+0x58/0x140
 [&lt;c01205fe&gt;] ? ack_apic_level+0x7e/0x270
 [&lt;c014a1fd&gt;] ? do_softirq+0x3d/0x40
 [&lt;c014a345&gt;] ? irq_exit+0x65/0x90
 [&lt;c010a6af&gt;] ? do_IRQ+0x4f/0xc0
 [&lt;c014a35d&gt;] ? irq_exit+0x7d/0x90
 [&lt;c011d547&gt;] ? smp_apic_timer_interrupt+0x57/0x90
 [&lt;c01094a9&gt;] ? common_interrupt+0x29/0x30
 [&lt;c010fd9e&gt;] ? mwait_idle+0xbe/0x100
 [&lt;c0107e42&gt;] ? cpu_idle+0x52/0x90
 [&lt;c054b1a5&gt;] ? rest_init+0x55/0x60
 [&lt;c077492d&gt;] ? start_kernel+0x315/0x37d
 [&lt;c07743ce&gt;] ? unknown_bootoption+0x0/0x1f9
 [&lt;c0774099&gt;] ? i386_start_kernel+0x79/0x81
Code: &lt;bleh3&gt;
EIP: [&lt;f8806c70&gt;] ieee80211_agg_splice_packets+0x40/0xc0 [mac80211] SS:ESP 0068:c076be38
CR2: 0000000000000030

Testedy-by: Jack Lau &lt;jackelectronics@hotmail.com&gt;
Signed-off-by: Luis R. Rodriguez &lt;lrodriguez@atheros.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>mac80211: fix minstrel single-rate memory corruption</title>
<updated>2009-07-02T23:50:07+00:00</updated>
<author>
<name>Bob Copeland</name>
<email>me@bobcopeland.com</email>
</author>
<published>2009-06-05T12:21:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=e58e8373ccdc6ef164009b814d0791705c0d3394'/>
<id>urn:sha1:e58e8373ccdc6ef164009b814d0791705c0d3394</id>
<content type='text'>
commit 5ee58d7e6ad019675b4090582aec4fa1180d8703 upstream.

The minstrel rate controller periodically looks up rate indexes in
a sampling table.  When accessing a specific row and column, minstrel
correctly does a bounds check which, on the surface, appears to handle
the case where mi-&gt;n_rates &lt; 2.  However, mi-&gt;sample_idx is actually
defined as an unsigned, so the right hand side is taken to be a huge
positive number when negative, and the check will always fail.

Consequently, the RC will overrun the array and cause random memory
corruption when communicating with a peer that has only a single rate.
The max value of mi-&gt;sample_idx is around 25 so casting to int should
have no ill effects.

Without the change, uptime is a few minutes under load with an AP
that has a single hard-coded rate, and both the AP and STA could
potentially crash.  With the change, both lasted 12 hours with a
steady load.

Thanks to Ognjen Maric for providing the single-rate clue so I could
reproduce this.

This fixes http://bugzilla.kernel.org/show_bug.cgi?id=12490 on the
regression list (also http://bugzilla.kernel.org/show_bug.cgi?id=13000).

Reported-by: Sergey S. Kostyliov &lt;rathamahata@gmail.com&gt;
Reported-by: Ognjen Maric &lt;ognjen.maric@gmail.com&gt;
Signed-off-by: Bob Copeland &lt;me@bobcopeland.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>mac80211: avoid NULL ptr deref when finding max_rates in PID and minstrel</title>
<updated>2009-05-11T19:07:01+00:00</updated>
<author>
<name>John W. Linville</name>
<email>linville@tuxdriver.com</email>
</author>
<published>2009-05-05T19:18:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=621ad7c96aa138cfeab53cd4debc5a4e08b2189b'/>
<id>urn:sha1:621ad7c96aa138cfeab53cd4debc5a4e08b2189b</id>
<content type='text'>
"There is another problem with this piece of code. The sband will be NULL
after second iteration on single band device and cause null pointer
dereference. Everything is working with dual band card. Sorry, but i
don't know how to explain this clearly in English. I have looked on the
second patch for pid algorithm and found similar bug."

Reported-by: Karol Szuster &lt;qflon@o2.pl&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
</entry>
<entry>
<title>mac80211: pid, fix memory corruption</title>
<updated>2009-05-04T20:22:16+00:00</updated>
<author>
<name>Jiri Slaby</name>
<email>jirislaby@gmail.com</email>
</author>
<published>2009-05-04T16:10:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=6909268dc93ae4b0b8e1ebb4b2fa70b1a47dd347'/>
<id>urn:sha1:6909268dc93ae4b0b8e1ebb4b2fa70b1a47dd347</id>
<content type='text'>
pid doesn't count with some band having more bitrates than the one
associated the first time.
Fix that by counting the maximal available bitrate count and allocate
big enough space.

Secondly, fix touching uninitialized memory which causes panics.
Index sucked from this random memory points to the hell.
The fix is to sort the rates on each band change.

Signed-off-by: Jiri Slaby &lt;jirislaby@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
</entry>
<entry>
<title>mac80211: minstrel, fix memory corruption</title>
<updated>2009-05-04T20:22:15+00:00</updated>
<author>
<name>Jiri Slaby</name>
<email>jirislaby@gmail.com</email>
</author>
<published>2009-05-04T16:04:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=8e532175277d9a5eae49768ed086555081f741a7'/>
<id>urn:sha1:8e532175277d9a5eae49768ed086555081f741a7</id>
<content type='text'>
minstrel doesn't count max rate count in fact, since it doesn't use
a loop variable `i' and hence allocs space only for bitrates found in
the first band.

Fix it by involving the `i' as an index so that it traverses all the
bands now and finds the real max bitrate count.

Signed-off-by: Jiri Slaby &lt;jirislaby@gmail.com&gt;
Cc: Felix Fietkau &lt;nbd@openwrt.org&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
</entry>
<entry>
<title>mac80211: correct fragmentation threshold check</title>
<updated>2009-05-04T20:22:08+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes@sipsolutions.net</email>
</author>
<published>2009-04-29T21:35:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=8ccd8f21122dcc30a665516d43aa8b4aa8ae51f6'/>
<id>urn:sha1:8ccd8f21122dcc30a665516d43aa8b4aa8ae51f6</id>
<content type='text'>
The fragmentation threshold is defined to be including the
FCS, and the code that sets the TX_FRAGMENTED flag correctly
accounts for those four bytes. The code that verifies this
doesn't though, which could lead to spurious warnings and
frames being dropped although everything is ok. Correct the
code by accounting for the FCS.

(JWL -- The problem is described here:
 http://article.gmane.org/gmane.linux.kernel.wireless.general/32205 )

Signed-off-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
</entry>
<entry>
<title>mac80211: default to automatic power control</title>
<updated>2009-04-29T20:48:33+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes@sipsolutions.net</email>
</author>
<published>2009-04-28T22:28:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=c428c89201a57a0ce24c37ed79e540d1f4101cf3'/>
<id>urn:sha1:c428c89201a57a0ce24c37ed79e540d1f4101cf3</id>
<content type='text'>
In "mac80211: correct wext transmit power handler"
I fixed the wext handler, but forgot to make the default of the
user_power_level -1 (aka "auto"), so that now the transmit power
is always set to 0, causing associations to time out and similar
problems since we're transmitting with very little power. Correct
this by correcting the default user_power_level to -1.

Signed-off-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Bisected-by: Niel Lambrechts &lt;niel.lambrechts@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
</entry>
<entry>
<title>mac80211: fix modprobe deadlock by not calling wep_init under rtnl_lock</title>
<updated>2009-04-29T20:48:33+00:00</updated>
<author>
<name>Alan Jenkins</name>
<email>alan-jenkins@tuffmail.co.uk</email>
</author>
<published>2009-04-29T10:41:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=d4c4a9a1bce1912ed5681251f0037fd4f2364a3e'/>
<id>urn:sha1:d4c4a9a1bce1912ed5681251f0037fd4f2364a3e</id>
<content type='text'>
- ieee80211_wep_init(), which is called with rtnl_lock held, blocks in
   request_module() [waiting for modprobe to load a crypto module].

 - modprobe blocks in a call to flush_workqueue(), when it closes a TTY
   [presumably when it exits].

 - The workqueue item linkwatch_event() blocks on rtnl_lock.

There's no reason for wep_init() to be called with rtnl_lock held, so
just move it outside the critical section.

Signed-off-by: Alan Jenkins &lt;alan-jenkins@tuffmail.co.uk&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
</entry>
<entry>
<title>mac80211: fix alignment calculation bug</title>
<updated>2009-04-21T20:43:33+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes@sipsolutions.net</email>
</author>
<published>2009-04-20T23:36:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=d1bcb9f1273adee6d2ce5edf84f19409a5cc31b9'/>
<id>urn:sha1:d1bcb9f1273adee6d2ce5edf84f19409a5cc31b9</id>
<content type='text'>
When checking whether or not a given frame needs to be
moved to be properly aligned to a 4-byte boundary, we
use &amp; 4 which wasn't intended, this code should check
the lowest two bits.

Signed-off-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
</entry>
<entry>
<title>mac80211: do not print WARN if config interface</title>
<updated>2009-04-21T20:43:32+00:00</updated>
<author>
<name>Reinette Chatre</name>
<email>reinette.chatre@intel.com</email>
</author>
<published>2009-04-20T22:36:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=7d42081a271bd8a82f2100524085c4f029e47717'/>
<id>urn:sha1:7d42081a271bd8a82f2100524085c4f029e47717</id>
<content type='text'>
It is expected that config interface will always succeed as mac80211
will only request what driver supports. The exception here is when a
device has rfkill enabled. At this time the rfkill state is unknown to
mac80211 and config interface can fail. When this happens we deal with
this error instead of printing a WARN.

Signed-off-by: Reinette Chatre &lt;reinette.chatre@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
</entry>
</feed>
