<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/git/stable/linux.git/net/wireless/scan.c, 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-24T15:27:10+00:00</updated>
<entry>
<title>cfg80211: fix looping soft lockup in find_ie()</title>
<updated>2009-09-24T15:27:10+00:00</updated>
<author>
<name>Bob Copeland</name>
<email>me@bobcopeland.com</email>
</author>
<published>2009-09-01T22:12:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=222c06bae9ee5b2ecdabf6b54fc67e28f93867ea'/>
<id>urn:sha1:222c06bae9ee5b2ecdabf6b54fc67e28f93867ea</id>
<content type='text'>
commit fcc6cb0c13555e78c2d47257b6d1b5e59b0c419a upstream.

The find_ie() function uses a size_t for the len parameter, and
directly uses len as a loop variable.  If any received packets
are malformed, it is possible for the decrease of len to overflow,
and since the result is unsigned, the loop will not terminate.
Change it to a signed int so the loop conditional works for
negative values.

This fixes the following soft lockup:

[38573.102007] BUG: soft lockup - CPU#0 stuck for 61s! [phy0:2230]
[38573.102007] Modules linked in: aes_i586 aes_generic fuse af_packet ipt_REJECT xt_tcpudp nf_conntrack_ipv4 nf_defrag_ipv4 xt_state iptable_filter ip_tables x_tables acpi_cpufreq binfmt_misc dm_mirror dm_region_hash dm_log dm_multipath dm_mod kvm_intel kvm uinput i915 arc4 ecb drm snd_hda_codec_idt ath5k snd_hda_intel hid_apple mac80211 usbhid appletouch snd_hda_codec snd_pcm ath cfg80211 snd_timer i2c_algo_bit ohci1394 video snd processor ieee1394 rfkill ehci_hcd sg sky2 backlight snd_page_alloc uhci_hcd joydev output ac thermal button battery sr_mod applesmc cdrom input_polldev evdev unix [last unloaded: scsi_wait_scan]
[38573.102007] irq event stamp: 2547724535
[38573.102007] hardirqs last  enabled at (2547724534): [&lt;c1002ffc&gt;] restore_all_notrace+0x0/0x18
[38573.102007] hardirqs last disabled at (2547724535): [&lt;c10038f4&gt;] apic_timer_interrupt+0x28/0x34
[38573.102007] softirqs last  enabled at (92950144): [&lt;c103ab48&gt;] __do_softirq+0x108/0x210
[38573.102007] softirqs last disabled at (92950274): [&lt;c1348e74&gt;] _spin_lock_bh+0x14/0x80
[38573.102007]
[38573.102007] Pid: 2230, comm: phy0 Tainted: G        W  (2.6.31-rc7-wl #8) MacBook1,1
[38573.102007] EIP: 0060:[&lt;f8ea2d50&gt;] EFLAGS: 00010292 CPU: 0
[38573.102007] EIP is at cmp_ies+0x30/0x180 [cfg80211]
[38573.102007] EAX: 00000082 EBX: 00000000 ECX: ffffffc1 EDX: d8efd014
[38573.102007] ESI: ffffff7c EDI: 0000004d EBP: eee2dc50 ESP: eee2dc3c
[38573.102007]  DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
[38573.102007] CR0: 8005003b CR2: d8efd014 CR3: 01694000 CR4: 000026d0
[38573.102007] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
[38573.102007] DR6: ffff0ff0 DR7: 00000400
[38573.102007] Call Trace:
[38573.102007]  [&lt;f8ea2f8d&gt;] cmp_bss+0xed/0x100 [cfg80211]
[38573.102007]  [&lt;f8ea33e4&gt;] cfg80211_bss_update+0x84/0x410 [cfg80211]
[38573.102007]  [&lt;f8ea3884&gt;] cfg80211_inform_bss_frame+0x114/0x180 [cfg80211]
[38573.102007]  [&lt;f97255ff&gt;] ieee80211_bss_info_update+0x4f/0x180 [mac80211]
[38573.102007]  [&lt;f972b118&gt;] ieee80211_rx_bss_info+0x88/0xf0 [mac80211]
[38573.102007]  [&lt;f9739297&gt;] ? ieee802_11_parse_elems+0x27/0x30 [mac80211]
[38573.102007]  [&lt;f972b224&gt;] ieee80211_rx_mgmt_probe_resp+0xa4/0x1c0 [mac80211]
[38573.102007]  [&lt;f972bc59&gt;] ieee80211_sta_rx_queued_mgmt+0x919/0xc50 [mac80211]
[38573.102007]  [&lt;c1009707&gt;] ? sched_clock+0x27/0xa0
[38573.102007]  [&lt;c1009707&gt;] ? sched_clock+0x27/0xa0
[38573.102007]  [&lt;c105ffd0&gt;] ? mark_held_locks+0x60/0x80
[38573.102007]  [&lt;c1348be5&gt;] ? _spin_unlock_irqrestore+0x55/0x70
[38573.102007]  [&lt;c134baa5&gt;] ? sub_preempt_count+0x85/0xc0
[38573.102007]  [&lt;c1348bce&gt;] ? _spin_unlock_irqrestore+0x3e/0x70
[38573.102007]  [&lt;c12c1c0f&gt;] ? skb_dequeue+0x4f/0x70
[38573.102007]  [&lt;f972c021&gt;] ieee80211_sta_work+0x91/0xb80 [mac80211]
[38573.102007]  [&lt;c1009707&gt;] ? sched_clock+0x27/0xa0
[38573.102007]  [&lt;c134baa5&gt;] ? sub_preempt_count+0x85/0xc0
[38573.102007]  [&lt;c10479af&gt;] worker_thread+0x18f/0x320
[38573.102007]  [&lt;c104794e&gt;] ? worker_thread+0x12e/0x320
[38573.102007]  [&lt;c1348be5&gt;] ? _spin_unlock_irqrestore+0x55/0x70
[38573.102007]  [&lt;f972bf90&gt;] ? ieee80211_sta_work+0x0/0xb80 [mac80211]
[38573.102007]  [&lt;c104cbb0&gt;] ? autoremove_wake_function+0x0/0x50
[38573.102007]  [&lt;c1047820&gt;] ? worker_thread+0x0/0x320
[38573.102007]  [&lt;c104c854&gt;] kthread+0x84/0x90
[38573.102007]  [&lt;c104c7d0&gt;] ? kthread+0x0/0x90
[38573.102007]  [&lt;c1003ab7&gt;] kernel_thread_helper+0x7/0x10

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>cfg80211: add two missing NULL pointer checks</title>
<updated>2009-08-16T21:18:37+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes@sipsolutions.net</email>
</author>
<published>2009-07-29T20:07:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=0d88ecb27391b7bad5b5e3c1c815860b42f8aed2'/>
<id>urn:sha1:0d88ecb27391b7bad5b5e3c1c815860b42f8aed2</id>
<content type='text'>
commit cd3468bad96c00b5a512f551674f36776129520e upstream.

These pointers can be NULL, the is_mesh() case isn't
ever hit in the current kernel, but cmp_ies() can be
hit under certain conditions.

Signed-off-by: Johannes Berg &lt;johannes@sipsolutions.net&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>cfg80211: fix refcount leak</title>
<updated>2009-07-30T21:39:09+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes@sipsolutions.net</email>
</author>
<published>2009-07-02T13:46:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=5c8affc6e16f6bad03b5c23d25b2c774b817160a'/>
<id>urn:sha1:5c8affc6e16f6bad03b5c23d25b2c774b817160a</id>
<content type='text'>
commit 2dce4c2b5f0b43bd25bf9ea6ded06b7f8a54c91f upstream.

The code in cfg80211's cfg80211_bss_update erroneously
grabs a reference to the BSS, which means that it will
never be freed.

Signed-off-by: Johannes Berg &lt;johannes@sipsolutions.net&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>cfg80211: fix truncated IEs</title>
<updated>2009-05-04T20:22:10+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes@sipsolutions.net</email>
</author>
<published>2009-04-30T18:09: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=c0f0aac05fa84b37ed46db8cf6c8bee9a67bbcca'/>
<id>urn:sha1:c0f0aac05fa84b37ed46db8cf6c8bee9a67bbcca</id>
<content type='text'>
Another bug in the "cfg80211: do not replace BSS structs" patch,
a forgotten length update leads to bogus data being stored and
passed to userspace, often truncated.

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>cfg80211: do not replace BSS structs</title>
<updated>2009-04-17T19:27:13+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes@sipsolutions.net</email>
</author>
<published>2009-04-16T13:00:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=cd1658f592a60d028dd2e48d86724b737a82cab0'/>
<id>urn:sha1:cd1658f592a60d028dd2e48d86724b737a82cab0</id>
<content type='text'>
Instead, allocate extra IE memory if necessary. Normally,
this isn't even necessary since there's enough space.

This is a better way of correcting the "held BSS can
disappear" issue, but also a lot more code. It is also
necessary for proper auth/assoc BSS handling in the
future.

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>cfg80211: copy hold when replacing BSS</title>
<updated>2009-04-17T19:27:13+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes@sipsolutions.net</email>
</author>
<published>2009-04-16T10:15:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=160002fe845218f5789a26954048592c3920ac7b'/>
<id>urn:sha1:160002fe845218f5789a26954048592c3920ac7b</id>
<content type='text'>
When we receive a probe response frame we can replace the
BSS struct in our list -- but if that struct is held then
we need to hold the new one as well.

We really should fix this completely and not replace the
struct, but this is a bandaid for now.

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>cfg80211: add feature to hold bss</title>
<updated>2009-03-28T00:13:13+00:00</updated>
<author>
<name>Kalle Valo</name>
<email>kalle.valo@nokia.com</email>
</author>
<published>2009-03-22T19:57: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=a08c1c1ac0c26229ca1ca45d554b209a56edc8be'/>
<id>urn:sha1:a08c1c1ac0c26229ca1ca45d554b209a56edc8be</id>
<content type='text'>
In beacon filtering there needs to be a way to not expire the BSS even
when no beacons are received. Add an interface to cfg80211 to hold
BSS and make sure that it's not expired.

Signed-off-by: Kalle Valo &lt;kalle.valo@nokia.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
</entry>
<entry>
<title>cfg80211: Add AP beacon regulatory hints</title>
<updated>2009-02-27T19:52:59+00:00</updated>
<author>
<name>Luis R. Rodriguez</name>
<email>lrodriguez@atheros.com</email>
</author>
<published>2009-02-21T05:20:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=e38f8a7a8bebbab9d97f204e2cf05ef58b048a1d'/>
<id>urn:sha1:e38f8a7a8bebbab9d97f204e2cf05ef58b048a1d</id>
<content type='text'>
When devices are world roaming they cannot beacon or do active scan
on 5 GHz or on channels 12, 13 and 14 on the 2 GHz band. Although
we have a good regulatory API some cards may _always_ world roam, this
is also true when a system does not have CRDA present. Devices doing world
roaming can still passive scan, if they find a beacon from an AP on
one of the world roaming frequencies we make the assumption we can do
the same and we also remove the passive scan requirement.

This adds support for providing beacon regulatory hints based on scans.
This works for devices that do either hardware or software scanning.
If a channel has not yet been marked as having had a beacon present
on it we queue the beacon hint processing into the workqueue.

All wireless devices will benefit from beacon regulatory hints from
any wireless device on a system including new devices connected to
the system at a later time.

Signed-off-by: Luis R. Rodriguez &lt;lrodriguez@atheros.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
</entry>
<entry>
<title>cfg80211: clean up signal type</title>
<updated>2009-02-27T19:52:42+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes@sipsolutions.net</email>
</author>
<published>2009-02-18T17:45:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=77965c970d7da9c9b6349ff2b1d9adecf54c403b'/>
<id>urn:sha1:77965c970d7da9c9b6349ff2b1d9adecf54c403b</id>
<content type='text'>
It wasn't a good idea to make the signal type a per-BSS option,
although then it is closer to the actual value. Move it to be
a per-wiphy setting, update mac80211 to match.

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>cfg80211/mac80211: fill qual.qual value/adjust max_qual.qual</title>
<updated>2009-02-27T19:52:40+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes@sipsolutions.net</email>
</author>
<published>2009-02-18T17:27:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=a77b855245541823b49999a27245ad7428879096'/>
<id>urn:sha1:a77b855245541823b49999a27245ad7428879096</id>
<content type='text'>
Due to various bugs in the software stack we end up having
to fill qual.qual; level should be used, but wpa_supplicant
doesn't properly ignore qual.qual, NM should use qual.level
regardless of that because qual.qual is 0 but doesn't handle
IW_QUAL_DBM right now.

So fill qual.qual with the qual.level value clamped to
-110..-40 dBm or just the regular 'unspecified' signal level.
This requires a mac80211 change to properly announce the
max_qual.qual and avg_qual.qual values.

Signed-off-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
</entry>
</feed>
