<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/net/wireless/core.c, branch v3.14.3</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>cfg80211: remove racy beacon_interval assignment</title>
<updated>2014-03-03T13:18:20+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2014-03-03T12:55:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=bc00a91d627026f08abf69bf5d0015499dd30c2a'/>
<id>bc00a91d627026f08abf69bf5d0015499dd30c2a</id>
<content type='text'>
In case of AP mode, the beacon interval is already reset to
zero inside cfg80211_stop_ap(), and in the other modes it
isn't relevant. Remove the assignment to remove a potential
race since the assignment isn't properly locked.

Reported-by: Michal Kazior &lt;michal.kazior@tieto.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In case of AP mode, the beacon interval is already reset to
zero inside cfg80211_stop_ap(), and in the other modes it
isn't relevant. Remove the assignment to remove a potential
race since the assignment isn't properly locked.

Reported-by: Michal Kazior &lt;michal.kazior@tieto.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</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.toradex.cn/cgit/linux-toradex.git/commit/?id=f9d15d162b3acf28f85b3ac05c4883e5ed588d28'/>
<id>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>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: fix scan done race</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:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=a617302c531eaf497ccd02a61d380efc119ba999'/>
<id>a617302c531eaf497ccd02a61d380efc119ba999</id>
<content type='text'>
When an interface/wdev is removed, any ongoing scan should be
cancelled by the driver. This will make it call cfg80211, which
only queues a work struct. If interface/wdev removal is quick
enough, this can leave the scan request pending and processed
only after the interface is gone, causing a use-after-free.

Fix this by making sure the scan request is not pending after
the interface is destroyed. We can't flush or cancel the work
item due to locking concerns, but when it'll run it shouldn't
find anything to do. This leaves a potential issue, if a new
scan gets requested before the work runs, it prematurely stops
the running scan, potentially causing another crash. I'll fix
that in the next patch.

This was particularly observed with P2P_DEVICE wdevs, likely
because freeing them is quicker than freeing netdevs.

Reported-by: Andrei Otcheretianski &lt;andrei.otcheretianski@intel.com&gt;
Fixes: 4a58e7c38443 ("cfg80211: don't "leak" uncompleted scans")
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When an interface/wdev is removed, any ongoing scan should be
cancelled by the driver. This will make it call cfg80211, which
only queues a work struct. If interface/wdev removal is quick
enough, this can leave the scan request pending and processed
only after the interface is gone, causing a use-after-free.

Fix this by making sure the scan request is not pending after
the interface is destroyed. We can't flush or cancel the work
item due to locking concerns, but when it'll run it shouldn't
find anything to do. This leaves a potential issue, if a new
scan gets requested before the work runs, it prematurely stops
the running scan, potentially causing another crash. I'll fix
that in the next patch.

This was particularly observed with P2P_DEVICE wdevs, likely
because freeing them is quicker than freeing netdevs.

Reported-by: Andrei Otcheretianski &lt;andrei.otcheretianski@intel.com&gt;
Fixes: 4a58e7c38443 ("cfg80211: don't "leak" uncompleted scans")
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: re-enable 5/10 MHz support</title>
<updated>2014-02-06T08:55:18+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2014-01-23T15:32:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=5a6aa705ffdd97552ff756bbfa7d5a3b62a6c690'/>
<id>5a6aa705ffdd97552ff756bbfa7d5a3b62a6c690</id>
<content type='text'>
Unfortunately I forgot this during the merge window, but the
patch seems small enough to go in as a fix. The userspace API
bug that was the reason for disabling it has long been fixed.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Unfortunately I forgot this during the merge window, but the
patch seems small enough to go in as a fix. The userspace API
bug that was the reason for disabling it has long been fixed.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'wireless-next/master' into mac80211-next</title>
<updated>2013-12-16T10:23:45+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2013-12-16T10:23:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=c4de673b775e4db48cd2db6277e0c6714332ca0c'/>
<id>c4de673b775e4db48cd2db6277e0c6714332ca0c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless</title>
<updated>2013-12-06T14:50:45+00:00</updated>
<author>
<name>John W. Linville</name>
<email>linville@tuxdriver.com</email>
</author>
<published>2013-12-06T14:50:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e08fd975bf26aa8063cadd245817e042f570472d'/>
<id>e08fd975bf26aa8063cadd245817e042f570472d</id>
<content type='text'>
Conflicts:
	drivers/net/wireless/brcm80211/Kconfig
	net/mac80211/util.c
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Conflicts:
	drivers/net/wireless/brcm80211/Kconfig
	net/mac80211/util.c
</pre>
</div>
</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.toradex.cn/cgit/linux-toradex.git/commit/?id=4a58e7c38443154fce1b47910e1a9184f65c5d72'/>
<id>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>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
___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;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: stop sched scan only when needed</title>
<updated>2013-12-05T16:15:38+00:00</updated>
<author>
<name>Barak Bercovitz</name>
<email>barak@wizery.com</email>
</author>
<published>2013-12-05T09:21:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=24d584d70e478bf2e815135e8bf60f72685046f7'/>
<id>24d584d70e478bf2e815135e8bf60f72685046f7</id>
<content type='text'>
cfg80211_leave stops sched scan when any station vif
is leaving. Add an explicit check and call it only
when the relevant vif (the one we scan on) is leaving.

Signed-off-by: Barak Bercovitz &lt;barak@wizery.com&gt;
[Eliad - changed the commit message a bit]
Signed-off-by: Eliad Peller &lt;eliad@wizery.com&gt;
[Johannes - add ASSERT_RTNL since that protects the pointer]
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
cfg80211_leave stops sched scan when any station vif
is leaving. Add an explicit check and call it only
when the relevant vif (the one we scan on) is leaving.

Signed-off-by: Barak Bercovitz &lt;barak@wizery.com&gt;
[Eliad - changed the commit message a bit]
Signed-off-by: Eliad Peller &lt;eliad@wizery.com&gt;
[Johannes - add ASSERT_RTNL since that protects the pointer]
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: disable CSA for all drivers</title>
<updated>2013-12-02T10:53:44+00:00</updated>
<author>
<name>Simon Wunderlich</name>
<email>sw@simonwunderlich.de</email>
</author>
<published>2013-11-26T15:07:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=dda444d52496aa8ddc501561bca580f1374a96a9'/>
<id>dda444d52496aa8ddc501561bca580f1374a96a9</id>
<content type='text'>
The channel switch announcement code has some major locking problems
which can cause a deadlock in worst case. A series of fixes has been
proposed, but these are non-trivial and need to be tested first.
Therefore disable CSA completely for 3.13.

Signed-off-by: Simon Wunderlich &lt;sw@simonwunderlich.de&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The channel switch announcement code has some major locking problems
which can cause a deadlock in worst case. A series of fixes has been
proposed, but these are non-trivial and need to be tested first.
Therefore disable CSA completely for 3.13.

Signed-off-by: Simon Wunderlich &lt;sw@simonwunderlich.de&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: move regulatory flags to their own variable</title>
<updated>2013-11-25T19:51:46+00:00</updated>
<author>
<name>Luis R. Rodriguez</name>
<email>mcgrof@do-not-panic.com</email>
</author>
<published>2013-11-11T21:15:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=a2f73b6c5db3c272d87eaebb5bed355d75a0f25f'/>
<id>a2f73b6c5db3c272d87eaebb5bed355d75a0f25f</id>
<content type='text'>
We'll expand this later, this will make it easier to
classify and review what things are related to regulatory
or not.

Coccinelle only missed 4 hits, which I had to do manually,
supplying the SmPL in case of merge conflicts.

@@
struct wiphy *wiphy;
@@
-wiphy-&gt;flags |= WIPHY_FLAG_CUSTOM_REGULATORY
+wiphy-&gt;regulatory_flags |= REGULATORY_CUSTOM_REG
@@
expression e;
@@
-e-&gt;flags |= WIPHY_FLAG_CUSTOM_REGULATORY
+e-&gt;regulatory_flags |= REGULATORY_CUSTOM_REG
@@
struct wiphy *wiphy;
@@
-wiphy-&gt;flags &amp;= ~WIPHY_FLAG_CUSTOM_REGULATORY
+wiphy-&gt;regulatory_flags &amp;= ~REGULATORY_CUSTOM_REG
@@
struct wiphy *wiphy;
@@
-wiphy-&gt;flags &amp; WIPHY_FLAG_CUSTOM_REGULATORY
+wiphy-&gt;regulatory_flags &amp; REGULATORY_CUSTOM_REG

@@
struct wiphy *wiphy;
@@
-wiphy-&gt;flags |= WIPHY_FLAG_STRICT_REGULATORY
+wiphy-&gt;regulatory_flags |= REGULATORY_STRICT_REG
@@
expression e;
@@
-e-&gt;flags |= WIPHY_FLAG_STRICT_REGULATORY
+e-&gt;regulatory_flags |= REGULATORY_STRICT_REG
@@
struct wiphy *wiphy;
@@
-wiphy-&gt;flags &amp;= ~WIPHY_FLAG_STRICT_REGULATORY
+wiphy-&gt;regulatory_flags &amp;= ~REGULATORY_STRICT_REG
@@
struct wiphy *wiphy;
@@
-wiphy-&gt;flags &amp; WIPHY_FLAG_STRICT_REGULATORY
+wiphy-&gt;regulatory_flags &amp; REGULATORY_STRICT_REG

@@
struct wiphy *wiphy;
@@
-wiphy-&gt;flags |= WIPHY_FLAG_DISABLE_BEACON_HINTS
+wiphy-&gt;regulatory_flags |= REGULATORY_DISABLE_BEACON_HINTS
@@
expression e;
@@
-e-&gt;flags |= WIPHY_FLAG_DISABLE_BEACON_HINTS
+e-&gt;regulatory_flags |= REGULATORY_DISABLE_BEACON_HINTS
@@
struct wiphy *wiphy;
@@
-wiphy-&gt;flags &amp;= ~WIPHY_FLAG_DISABLE_BEACON_HINTS
+wiphy-&gt;regulatory_flags &amp;= ~REGULATORY_DISABLE_BEACON_HINTS
@@
struct wiphy *wiphy;
@@
-wiphy-&gt;flags &amp; WIPHY_FLAG_DISABLE_BEACON_HINTS
+wiphy-&gt;regulatory_flags &amp; REGULATORY_DISABLE_BEACON_HINTS

Generated-by: Coccinelle SmPL
Cc: Julia Lawall &lt;julia.lawall@lip6.fr&gt;
Cc: Peter Senna Tschudin &lt;peter.senna@gmail.com&gt;
Cc: Mihir Shete &lt;smihir@qti.qualcomm.com&gt;
Cc: Henri Bahini &lt;hbahini@qca.qualcomm.com&gt;
Cc: Tushnim Bhattacharyya &lt;tushnimb@qca.qualcomm.com&gt;
Signed-off-by: Luis R. Rodriguez &lt;mcgrof@do-not-panic.com&gt;
[fix up whitespace damage, overly long lines]
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We'll expand this later, this will make it easier to
classify and review what things are related to regulatory
or not.

Coccinelle only missed 4 hits, which I had to do manually,
supplying the SmPL in case of merge conflicts.

@@
struct wiphy *wiphy;
@@
-wiphy-&gt;flags |= WIPHY_FLAG_CUSTOM_REGULATORY
+wiphy-&gt;regulatory_flags |= REGULATORY_CUSTOM_REG
@@
expression e;
@@
-e-&gt;flags |= WIPHY_FLAG_CUSTOM_REGULATORY
+e-&gt;regulatory_flags |= REGULATORY_CUSTOM_REG
@@
struct wiphy *wiphy;
@@
-wiphy-&gt;flags &amp;= ~WIPHY_FLAG_CUSTOM_REGULATORY
+wiphy-&gt;regulatory_flags &amp;= ~REGULATORY_CUSTOM_REG
@@
struct wiphy *wiphy;
@@
-wiphy-&gt;flags &amp; WIPHY_FLAG_CUSTOM_REGULATORY
+wiphy-&gt;regulatory_flags &amp; REGULATORY_CUSTOM_REG

@@
struct wiphy *wiphy;
@@
-wiphy-&gt;flags |= WIPHY_FLAG_STRICT_REGULATORY
+wiphy-&gt;regulatory_flags |= REGULATORY_STRICT_REG
@@
expression e;
@@
-e-&gt;flags |= WIPHY_FLAG_STRICT_REGULATORY
+e-&gt;regulatory_flags |= REGULATORY_STRICT_REG
@@
struct wiphy *wiphy;
@@
-wiphy-&gt;flags &amp;= ~WIPHY_FLAG_STRICT_REGULATORY
+wiphy-&gt;regulatory_flags &amp;= ~REGULATORY_STRICT_REG
@@
struct wiphy *wiphy;
@@
-wiphy-&gt;flags &amp; WIPHY_FLAG_STRICT_REGULATORY
+wiphy-&gt;regulatory_flags &amp; REGULATORY_STRICT_REG

@@
struct wiphy *wiphy;
@@
-wiphy-&gt;flags |= WIPHY_FLAG_DISABLE_BEACON_HINTS
+wiphy-&gt;regulatory_flags |= REGULATORY_DISABLE_BEACON_HINTS
@@
expression e;
@@
-e-&gt;flags |= WIPHY_FLAG_DISABLE_BEACON_HINTS
+e-&gt;regulatory_flags |= REGULATORY_DISABLE_BEACON_HINTS
@@
struct wiphy *wiphy;
@@
-wiphy-&gt;flags &amp;= ~WIPHY_FLAG_DISABLE_BEACON_HINTS
+wiphy-&gt;regulatory_flags &amp;= ~REGULATORY_DISABLE_BEACON_HINTS
@@
struct wiphy *wiphy;
@@
-wiphy-&gt;flags &amp; WIPHY_FLAG_DISABLE_BEACON_HINTS
+wiphy-&gt;regulatory_flags &amp; REGULATORY_DISABLE_BEACON_HINTS

Generated-by: Coccinelle SmPL
Cc: Julia Lawall &lt;julia.lawall@lip6.fr&gt;
Cc: Peter Senna Tschudin &lt;peter.senna@gmail.com&gt;
Cc: Mihir Shete &lt;smihir@qti.qualcomm.com&gt;
Cc: Henri Bahini &lt;hbahini@qca.qualcomm.com&gt;
Cc: Tushnim Bhattacharyya &lt;tushnimb@qca.qualcomm.com&gt;
Signed-off-by: Luis R. Rodriguez &lt;mcgrof@do-not-panic.com&gt;
[fix up whitespace damage, overly long lines]
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
