<feed xmlns='http://www.w3.org/2005/Atom'>
<title>user/sven/linux.git/net/wireless, branch v3.6.5</title>
<subtitle>Linux Kernel
</subtitle>
<id>https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v3.6.5</id>
<link rel='self' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v3.6.5'/>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/'/>
<updated>2012-10-31T17:10:31Z</updated>
<entry>
<title>cfg80211/mac80211: avoid state mishmash on deauth</title>
<updated>2012-10-31T17:10:31Z</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2012-10-15T12:52:41Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=116f83b82e7272fec7f9f0f71376bdc67b159ae2'/>
<id>urn:sha1:116f83b82e7272fec7f9f0f71376bdc67b159ae2</id>
<content type='text'>
commit 6863255bd0e48bc41ae5a066d5c771801e92735a upstream.

Avoid situation when we are on associate state in mac80211 and
on disassociate state in cfg80211. This can results on crash
during modules unload (like showed on this thread:
http://marc.info/?t=134373976300001&amp;r=1&amp;w=2) and possibly other
problems.

Reported-by: Pedro Francisco &lt;pedrogfrancisco@gmail.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.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>
</entry>
<entry>
<title>cfg80211: fix possible circular lock on reg_regdb_search()</title>
<updated>2012-09-19T00:43:23Z</updated>
<author>
<name>Luis R. Rodriguez</name>
<email>mcgrof@do-not-panic.com</email>
</author>
<published>2012-09-14T22:36:57Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=a85d0d7f3460b1a123b78e7f7e39bf72c37dfb78'/>
<id>urn:sha1:a85d0d7f3460b1a123b78e7f7e39bf72c37dfb78</id>
<content type='text'>
When call_crda() is called we kick off a witch hunt search
for the same regulatory domain on our internal regulatory
database and that work gets kicked off on a workqueue, this
is done while the cfg80211_mutex is held. If that workqueue
kicks off it will first lock reg_regdb_search_mutex and
later cfg80211_mutex but to ensure two CPUs will not contend
against cfg80211_mutex the right thing to do is to have the
reg_regdb_search() wait until the cfg80211_mutex is let go.

The lockdep report is pasted below.

cfg80211: Calling CRDA to update world regulatory domain

======================================================
[ INFO: possible circular locking dependency detected ]
3.3.8 #3 Tainted: G           O
-------------------------------------------------------
kworker/0:1/235 is trying to acquire lock:
 (cfg80211_mutex){+.+...}, at: [&lt;816468a4&gt;] set_regdom+0x78c/0x808 [cfg80211]

but task is already holding lock:
 (reg_regdb_search_mutex){+.+...}, at: [&lt;81646828&gt;] set_regdom+0x710/0x808 [cfg80211]

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #2 (reg_regdb_search_mutex){+.+...}:
       [&lt;800a8384&gt;] lock_acquire+0x60/0x88
       [&lt;802950a8&gt;] mutex_lock_nested+0x54/0x31c
       [&lt;81645778&gt;] is_world_regdom+0x9f8/0xc74 [cfg80211]

-&gt; #1 (reg_mutex#2){+.+...}:
       [&lt;800a8384&gt;] lock_acquire+0x60/0x88
       [&lt;802950a8&gt;] mutex_lock_nested+0x54/0x31c
       [&lt;8164539c&gt;] is_world_regdom+0x61c/0xc74 [cfg80211]

-&gt; #0 (cfg80211_mutex){+.+...}:
       [&lt;800a77b8&gt;] __lock_acquire+0x10d4/0x17bc
       [&lt;800a8384&gt;] lock_acquire+0x60/0x88
       [&lt;802950a8&gt;] mutex_lock_nested+0x54/0x31c
       [&lt;816468a4&gt;] set_regdom+0x78c/0x808 [cfg80211]

other info that might help us debug this:

Chain exists of:
  cfg80211_mutex --&gt; reg_mutex#2 --&gt; reg_regdb_search_mutex

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(reg_regdb_search_mutex);
                               lock(reg_mutex#2);
                               lock(reg_regdb_search_mutex);
  lock(cfg80211_mutex);

 *** DEADLOCK ***

3 locks held by kworker/0:1/235:
 #0:  (events){.+.+..}, at: [&lt;80089a00&gt;] process_one_work+0x230/0x460
 #1:  (reg_regdb_work){+.+...}, at: [&lt;80089a00&gt;] process_one_work+0x230/0x460
 #2:  (reg_regdb_search_mutex){+.+...}, at: [&lt;81646828&gt;] set_regdom+0x710/0x808 [cfg80211]

stack backtrace:
Call Trace:
[&lt;80290fd4&gt;] dump_stack+0x8/0x34
[&lt;80291bc4&gt;] print_circular_bug+0x2ac/0x2d8
[&lt;800a77b8&gt;] __lock_acquire+0x10d4/0x17bc
[&lt;800a8384&gt;] lock_acquire+0x60/0x88
[&lt;802950a8&gt;] mutex_lock_nested+0x54/0x31c
[&lt;816468a4&gt;] set_regdom+0x78c/0x808 [cfg80211]

Reported-by: Felix Fietkau &lt;nbd@openwrt.org&gt;
Tested-by: Felix Fietkau &lt;nbd@openwrt.org&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Luis R. Rodriguez &lt;mcgrof@do-not-panic.com&gt;
Reviewed-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211</title>
<updated>2012-09-05T18:48:15Z</updated>
<author>
<name>John W. Linville</name>
<email>linville@tuxdriver.com</email>
</author>
<published>2012-09-05T18:48:15Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=785a7de9ee5ab1ff2ec9c6e58667bde1055f2f1b'/>
<id>urn:sha1:785a7de9ee5ab1ff2ec9c6e58667bde1055f2f1b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>nl80211: fix possible memory leak nl80211_connect()</title>
<updated>2012-09-04T16:06:00Z</updated>
<author>
<name>Wei Yongjun</name>
<email>yongjun_wei@trendmicro.com.cn</email>
</author>
<published>2012-09-02T13:41:04Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=b4e4f47e940bc93c5b1125a4429ff53956754800'/>
<id>urn:sha1:b4e4f47e940bc93c5b1125a4429ff53956754800</id>
<content type='text'>
connkeys is malloced in nl80211_parse_connkeys() and should
be freed in the error handling case, otherwise it will cause
memory leak.

spatch with a semantic match is used to found this problem.
(http://coccinelle.lip6.fr/)

Signed-off-by: Wei Yongjun &lt;yongjun_wei@trendmicro.com.cn&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>cfg80211: process pending events when unregistering net device</title>
<updated>2012-08-06T18:29:58Z</updated>
<author>
<name>Daniel Drake</name>
<email>dsd@laptop.org</email>
</author>
<published>2012-08-02T17:41:48Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=1f6fc43e621167492ed4b7f3b4269c584c3d6ccc'/>
<id>urn:sha1:1f6fc43e621167492ed4b7f3b4269c584c3d6ccc</id>
<content type='text'>
libertas currently calls cfg80211_disconnected() when it is being
brought down. This causes an event to be allocated, but since the
wdev is already removed from the rdev by the time that the event
processing work executes, the event is never processed or freed.
http://article.gmane.org/gmane.linux.kernel.wireless.general/95666

Fix this leak, and other possible situations, by processing the event
queue when a device is being unregistered. Thanks to Johannes Berg for
the suggestion.

Signed-off-by: Daniel Drake &lt;dsd@laptop.org&gt;
Cc: stable@vger.kernel.org
Reviewed-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
</entry>
<entry>
<title>cfg80211: Clear "beacon_found" on regulatory restore</title>
<updated>2012-08-02T13:34:22Z</updated>
<author>
<name>Paul Stewart</name>
<email>pstew@chromium.org</email>
</author>
<published>2012-08-01T23:54:42Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=899852af60c212bfe9a2fb71d4d9082d2622df5c'/>
<id>urn:sha1:899852af60c212bfe9a2fb71d4d9082d2622df5c</id>
<content type='text'>
Restore the default state to the "beacon_found" flag when
the channel flags are restored.  Otherwise, we can end up
with a channel that we can no longer transmit on even when
we can see beacons on that channel.

Signed-off-by: Paul Stewart &lt;pstew@chromium.org&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>cfg80211: add channel flag to prohibit OFDM operation</title>
<updated>2012-08-02T13:30:49Z</updated>
<author>
<name>Seth Forshee</name>
<email>seth.forshee@canonical.com</email>
</author>
<published>2012-08-01T20:58:42Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=03f6b0843ad6512f27bc2e48f04c21065311e03e'/>
<id>urn:sha1:03f6b0843ad6512f27bc2e48f04c21065311e03e</id>
<content type='text'>
Currently the only way for wireless drivers to tell whether or not OFDM
is allowed on the current channel is to check the regulatory
information. However, this requires hodling cfg80211_mutex, which is not
visible to the drivers.

Other regulatory restrictions are provided as flags in the channel
definition, so let's do similarly with OFDM. This patch adds a new flag,
IEEE80211_CHAN_NO_OFDM, to tell drivers that OFDM on a channel is not
allowed. This flag is set on any channels for which regulatory indicates
that OFDM is prohibited.

Signed-off-by: Seth Forshee &lt;seth.forshee@canonical.com&gt;
Tested-by: Arend van Spriel &lt;arend@broadcom.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'wireless/master' into mac80211</title>
<updated>2012-07-30T07:13:03Z</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2012-07-30T07:13:03Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=fcb06702f023a0e7b1e6ebf9746f34b610ca0508'/>
<id>urn:sha1:fcb06702f023a0e7b1e6ebf9746f34b610ca0508</id>
<content type='text'>
</content>
</entry>
<entry>
<title>wireless: reg: restore previous behaviour of chan-&gt;max_power calculations</title>
<updated>2012-07-25T14:11:12Z</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2012-07-24T06:35:39Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=5e31fc0815a4e2c72b1b495fe7a0d8f9bfb9e4b4'/>
<id>urn:sha1:5e31fc0815a4e2c72b1b495fe7a0d8f9bfb9e4b4</id>
<content type='text'>
commit eccc068e8e84c8fe997115629925e0422a98e4de
Author: Hong Wu &lt;Hong.Wu@dspg.com&gt;
Date:   Wed Jan 11 20:33:39 2012 +0200

    wireless: Save original maximum regulatory transmission power for the calucation of the local maximum transmit pow

changed the way we calculate chan-&gt;max_power as min(chan-&gt;max_power,
chan-&gt;max_reg_power). That broke rt2x00 (and perhaps some other
drivers) that do not set chan-&gt;max_power. It is not so easy to fix this
problem correctly in rt2x00.

According to commit eccc068e8 changelog, change claim only to save
maximum regulatory power - changing setting of chan-&gt;max_power was side
effect. This patch restore previous calculations of chan-&gt;max_power and
do not touch chan-&gt;max_reg_power.

Cc: stable@vger.kernel.org # 3.4+
Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Acked-by: Luis R. Rodriguez &lt;mcgrof@qca.qualcomm.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem</title>
<updated>2012-07-20T16:30:48Z</updated>
<author>
<name>John W. Linville</name>
<email>linville@tuxdriver.com</email>
</author>
<published>2012-07-20T16:30:48Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=90b90f60c4f8e3a8525dfeb4aec46a9c7a29c857'/>
<id>urn:sha1:90b90f60c4f8e3a8525dfeb4aec46a9c7a29c857</id>
<content type='text'>
</content>
</entry>
</feed>
