<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/git/stable/linux.git/net/wireless/scan.c, branch linux-3.15.y</title>
<subtitle>Linux kernel stable tree</subtitle>
<id>https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/atom?h=linux-3.15.y</id>
<link rel='self' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/atom?h=linux-3.15.y'/>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/'/>
<updated>2014-05-05T13:14:57+00:00</updated>
<entry>
<title>cfg80211: add cfg80211_sched_scan_stopped_rtnl</title>
<updated>2014-05-05T13:14:57+00:00</updated>
<author>
<name>Eliad Peller</name>
<email>eliad@wizery.com</email>
</author>
<published>2014-04-30T13:14:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=792e6aa7a15ea0fb16f8687e93caede1ea9118c7'/>
<id>urn:sha1:792e6aa7a15ea0fb16f8687e93caede1ea9118c7</id>
<content type='text'>
Add locked-version for cfg80211_sched_scan_stopped.
This is used for some users that might want to
call it when rtnl is already locked.

Fixes: d43c6b6 ("mac80211: reschedule sched scan after HW restart")
Cc: stable@vger.kernel.org (3.14+)
Signed-off-by: Eliad Peller &lt;eliadx.peller@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>cfg80211: remove unnecessary check</title>
<updated>2014-03-19T20:29:57+00:00</updated>
<author>
<name>Zhao, Gang</name>
<email>gamerh2o@gmail.com</email>
</author>
<published>2014-03-19T09:04:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=4da64622131b6b0cd1211e220dc88cc15007b59d'/>
<id>urn:sha1:4da64622131b6b0cd1211e220dc88cc15007b59d</id>
<content type='text'>
RCU pointer bss-&gt;pub.beacon_ies is checked before in previous
statement:

if (rcu_access_pointer(bss-&gt;pub.beacon_ies))
	continue;

There is no need to check it twice(and in the wrong way :) ).

Signed-off-by: Zhao, Gang &lt;gamerh2o@gmail.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>cfg80211/mac80211: ignore signal if the frame was heard on wrong channel</title>
<updated>2014-03-19T20:29:56+00:00</updated>
<author>
<name>Emmanuel Grumbach</name>
<email>emmanuel.grumbach@intel.com</email>
</author>
<published>2014-03-04T14:50:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=3afc2167f60a327a2c1e1e2600ef209a3c2b75b7'/>
<id>urn:sha1:3afc2167f60a327a2c1e1e2600ef209a3c2b75b7</id>
<content type='text'>
On 2.4Ghz band, the channels overlap since the delta
between different channels is 5Mhz while the width of the
receiver is 20Mhz (at least).

This means that we can hear beacons or probe responses from
adjacent channels. These frames will have a significant
lower RSSI which will feed all kinds of logic with inaccurate
data. An obvious example is the roaming algorithm that will
think our AP is getting weak and will try to move to another
AP.

In order to avoid this, update the signal only if the frame
has been heard on the same channel as the one advertised by
the AP in its DS / HT IEs.
We refrain from updating the values only if the AP is
already in the BSS list so that we will still have a valid
(but inaccurate) value if the AP was heard on an adjacent
channel only.

To achieve this, stop taking the channel from DS / HT IEs
in mac80211. The DS / HT IEs is taken into account to
discard the frame if it was received on a disabled channel.
This can happen due to the same phenomenon: the frame is
sent on channel 12, but heard on channel 11 while channel
12 can be disabled on certain devices. Since this check
is done in cfg80211, stop even checking this in mac80211.

Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
[remove unused rx_freq variable]
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>cfg80211: send scan results from work queue</title>
<updated>2014-02-06T08:55:19+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2014-01-22T09:14: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=f9d15d162b3acf28f85b3ac05c4883e5ed588d28'/>
<id>urn:sha1:f9d15d162b3acf28f85b3ac05c4883e5ed588d28</id>
<content type='text'>
Due to the previous commit, when a scan finishes, it is in theory
possible to hit the following sequence:
 1. interface starts being removed
 2. scan is cancelled by driver and cfg80211 is notified
 3. scan done work is scheduled
 4. interface is removed completely, rdev-&gt;scan_req is freed,
    event sent to userspace but scan done work remains pending
 5. new scan is requested on another virtual interface
 6. scan done work runs, freeing the still-running scan

To fix this situation, hang on to the scan done message and block
new scans while that is the case, and only send the message from
the work function, regardless of whether the scan_req is already
freed from interface removal. This makes step 5 above impossible
and changes step 6 to be
 5. scan done work runs, sending the scan done message

As this can't work for wext, so we send the message immediately,
but this shouldn't be an issue since we still return -EBUSY.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>cfg80211: Add a function to get the number of supported channels</title>
<updated>2014-01-09T13:24:24+00:00</updated>
<author>
<name>Ilan Peer</name>
<email>ilan.peer@intel.com</email>
</author>
<published>2014-01-09T09:37:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=bdfbec2d2d240e9c528caae9c743801629b60166'/>
<id>urn:sha1:bdfbec2d2d240e9c528caae9c743801629b60166</id>
<content type='text'>
Add a utility function to get the number of channels supported by
the device, and update the places in the code that need this data.

Signed-off-by: Ilan Peer &lt;ilan.peer@intel.com&gt;
[replace another occurrence in libertas, fix kernel-doc, fix bugs]
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>cfg80211: don't "leak" uncompleted scans</title>
<updated>2013-12-05T18:06:47+00:00</updated>
<author>
<name>Eliad Peller</name>
<email>eliad@wizery.com</email>
</author>
<published>2013-12-05T16:30:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=4a58e7c38443154fce1b47910e1a9184f65c5d72'/>
<id>urn:sha1:4a58e7c38443154fce1b47910e1a9184f65c5d72</id>
<content type='text'>
___cfg80211_scan_done() can be called in some cases
(e.g. on NETDEV_DOWN) before the low level driver
notified scan completion (which is indicated by
passing leak=true).

Clearing rdev-&gt;scan_req in this case is buggy, as
scan_done_wk might have already being queued/running
(and can't be flushed as it takes rtnl()).

If a new scan will be requested at this stage, the
scan_done_wk will try freeing it (instead of the
previous scan), and this will later result in
a use after free.

Simply remove the "leak" option, and replace it with
a standard WARN_ON.

An example backtrace after such crash:
Unable to handle kernel paging request at virtual address fffffee5
pgd = c0004000
[fffffee5] *pgd=9fdf6821, *pte=00000000, *ppte=00000000
Internal error: Oops: 17 [#1] SMP ARM
PC is at cfg80211_scan_done+0x28/0xc4 [cfg80211]
LR is at __ieee80211_scan_completed+0xe4/0x2dc [mac80211]
[&lt;bf0077b0&gt;] (cfg80211_scan_done+0x28/0xc4 [cfg80211])
[&lt;bf0973d4&gt;] (__ieee80211_scan_completed+0xe4/0x2dc [mac80211])
[&lt;bf0982cc&gt;] (ieee80211_scan_work+0x94/0x4f0 [mac80211])
[&lt;c005fd10&gt;] (process_one_work+0x1b0/0x4a8)
[&lt;c0060404&gt;] (worker_thread+0x138/0x37c)
[&lt;c0066d70&gt;] (kthread+0xa4/0xb0)

Signed-off-by: Eliad Peller &lt;eliad@wizery.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>cfg80211: fix scheduled scan pointer access</title>
<updated>2013-10-21T09:59:15+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2013-10-21T09:33:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=79845c662eeb95c9a180b9bd0d3ad848ee65b94c'/>
<id>urn:sha1:79845c662eeb95c9a180b9bd0d3ad848ee65b94c</id>
<content type='text'>
Since rdev-&gt;sched_scan_req is dereferenced outside the
lock protecting it, this might be done at the wrong
time, causing crashes. Move the dereference to where
it should be - inside the RTNL locked section.

Cc: stable@vger.kernel.org [3.8+]
Reviewed-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>wireless: scan: Remove comment to compare_ether_addr</title>
<updated>2013-09-04T02:34:48+00:00</updated>
<author>
<name>Joe Perches</name>
<email>joe@perches.com</email>
</author>
<published>2013-09-01T22:48:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=1372a298ea4f2772655b2e69caa634f132f1d019'/>
<id>urn:sha1:1372a298ea4f2772655b2e69caa634f132f1d019</id>
<content type='text'>
This function is being removed, so remove the reference to it.

Signed-off-by: Joe Perches &lt;joe@perches.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>nl80211: add scan width to bss and scan request structs</title>
<updated>2013-07-16T06:58:01+00:00</updated>
<author>
<name>Simon Wunderlich</name>
<email>simon.wunderlich@s2003.tu-chemnitz.de</email>
</author>
<published>2013-07-08T14:55:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=dcd6eac1f3b5fa1df11dfa99da0cf75b76cfef97'/>
<id>urn:sha1:dcd6eac1f3b5fa1df11dfa99da0cf75b76cfef97</id>
<content type='text'>
To allow scanning and working with 5 MHz and 10 MHz BSS, extend the
inform bss commands and add wrappers to take 5 and 10 MHz bss into
account.

Signed-off-by: Simon Wunderlich &lt;siwu@hrz.tu-chemnitz.de&gt;
Signed-off-by: Mathias Kretschmer &lt;mathias.kretschmer@fokus.fraunhofer.de&gt;
Signed-off-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
</content>
</entry>
<entry>
<title>wireless: add comments about bss refcounting</title>
<updated>2013-06-24T13:54:45+00:00</updated>
<author>
<name>Ben Greear</name>
<email>greearb@candelatech.com</email>
</author>
<published>2013-06-19T21:06:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=0e3a39b5620bc84f25ffb0592b05b0350e8b0520'/>
<id>urn:sha1:0e3a39b5620bc84f25ffb0592b05b0350e8b0520</id>
<content type='text'>
Should help the next person that tries to understand
the bss refcounting logic.

Signed-off-by: Ben Greear &lt;greearb@candelatech.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
</feed>
