<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/net, branch v3.13-rc8</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>net: core: explicitly select a txq before doing l2 forwarding</title>
<updated>2014-01-10T18:23:08+00:00</updated>
<author>
<name>Jason Wang</name>
<email>jasowang@redhat.com</email>
</author>
<published>2014-01-10T08:18:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=f663dd9aaf9ed124f25f0f8452edf238f087ad50'/>
<id>f663dd9aaf9ed124f25f0f8452edf238f087ad50</id>
<content type='text'>
Currently, the tx queue were selected implicitly in ndo_dfwd_start_xmit(). The
will cause several issues:

- NETIF_F_LLTX were removed for macvlan, so txq lock were done for macvlan
  instead of lower device which misses the necessary txq synchronization for
  lower device such as txq stopping or frozen required by dev watchdog or
  control path.
- dev_hard_start_xmit() was called with NULL txq which bypasses the net device
  watchdog.
- dev_hard_start_xmit() does not check txq everywhere which will lead a crash
  when tso is disabled for lower device.

Fix this by explicitly introducing a new param for .ndo_select_queue() for just
selecting queues in the case of l2 forwarding offload. netdev_pick_tx() was also
extended to accept this parameter and dev_queue_xmit_accel() was used to do l2
forwarding transmission.

With this fixes, NETIF_F_LLTX could be preserved for macvlan and there's no need
to check txq against NULL in dev_hard_start_xmit(). Also there's no need to keep
a dedicated ndo_dfwd_start_xmit() and we can just reuse the code of
dev_queue_xmit() to do the transmission.

In the future, it was also required for macvtap l2 forwarding support since it
provides a necessary synchronization method.

Cc: John Fastabend &lt;john.r.fastabend@intel.com&gt;
Cc: Neil Horman &lt;nhorman@tuxdriver.com&gt;
Cc: e1000-devel@lists.sourceforge.net
Signed-off-by: Jason Wang &lt;jasowang@redhat.com&gt;
Acked-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;
Acked-by: John Fastabend &lt;john.r.fastabend@intel.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently, the tx queue were selected implicitly in ndo_dfwd_start_xmit(). The
will cause several issues:

- NETIF_F_LLTX were removed for macvlan, so txq lock were done for macvlan
  instead of lower device which misses the necessary txq synchronization for
  lower device such as txq stopping or frozen required by dev watchdog or
  control path.
- dev_hard_start_xmit() was called with NULL txq which bypasses the net device
  watchdog.
- dev_hard_start_xmit() does not check txq everywhere which will lead a crash
  when tso is disabled for lower device.

Fix this by explicitly introducing a new param for .ndo_select_queue() for just
selecting queues in the case of l2 forwarding offload. netdev_pick_tx() was also
extended to accept this parameter and dev_queue_xmit_accel() was used to do l2
forwarding transmission.

With this fixes, NETIF_F_LLTX could be preserved for macvlan and there's no need
to check txq against NULL in dev_hard_start_xmit(). Also there's no need to keep
a dedicated ndo_dfwd_start_xmit() and we can just reuse the code of
dev_queue_xmit() to do the transmission.

In the future, it was also required for macvtap l2 forwarding support since it
provides a necessary synchronization method.

Cc: John Fastabend &lt;john.r.fastabend@intel.com&gt;
Cc: Neil Horman &lt;nhorman@tuxdriver.com&gt;
Cc: e1000-devel@lists.sourceforge.net
Signed-off-by: Jason Wang &lt;jasowang@redhat.com&gt;
Acked-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;
Acked-by: John Fastabend &lt;john.r.fastabend@intel.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless</title>
<updated>2014-01-10T18:21:22+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2014-01-10T18:21:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=c4d7099867c7e7ade7693a5ac06f12b3c3cdbf8e'/>
<id>c4d7099867c7e7ade7693a5ac06f12b3c3cdbf8e</id>
<content type='text'>
John W. Linville says:

====================
For the mac80211 bits, Johannes says:

"I have a fix from Javier for mac80211_hwsim when used with wmediumd
userspace, and a fix from Felix for buffering in AP mode."

For the NFC bits, Samuel says:

"This pull request only contains one fix for a regression introduced with
commit e29a9e2ae165620d. Without this fix, we can not establish a p2p link
in target mode. Only initiator mode works."

For the iwlwifi bits, Emmanuel says:

"It only includes new device IDs so it's not vital. If you have a pull
request to net.git anyway, I'd happy to have this in."
====================

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
John W. Linville says:

====================
For the mac80211 bits, Johannes says:

"I have a fix from Javier for mac80211_hwsim when used with wmediumd
userspace, and a fix from Felix for buffering in AP mode."

For the NFC bits, Samuel says:

"This pull request only contains one fix for a regression introduced with
commit e29a9e2ae165620d. Without this fix, we can not establish a p2p link
in target mode. Only initiator mode works."

For the iwlwifi bits, Emmanuel says:

"It only includes new device IDs so it's not vital. If you have a pull
request to net.git anyway, I'd happy to have this in."
====================

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ipv6: add link-local, sit and loopback address with INFINITY_LIFE_TIME</title>
<updated>2014-01-10T04:07:47+00:00</updated>
<author>
<name>Hannes Frederic Sowa</name>
<email>hannes@stressinduktion.org</email>
</author>
<published>2014-01-08T14:43:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=07edd741c838e376933b445bbf2692f83b6774e6'/>
<id>07edd741c838e376933b445bbf2692f83b6774e6</id>
<content type='text'>
In the past the IFA_PERMANENT flag indicated, that the valid and preferred
lifetime where ignored. Since change fad8da3e085ddf ("ipv6 addrconf: fix
preferred lifetime state-changing behavior while valid_lft is infinity")
we honour at least the preferred lifetime on those addresses. As such
the valid lifetime gets recalculated and updated to 0.

If loopback address is added manually this problem does not occur.
Also if NetworkManager manages IPv6, those addresses will get added via
inet6_rtm_newaddr and thus will have a correct lifetime, too.

Reported-by: François-Xavier Le Bail &lt;fx.lebail@yahoo.com&gt;
Reported-by: Damien Wyart &lt;damien.wyart@gmail.com&gt;
Fixes: fad8da3e085ddf ("ipv6 addrconf: fix preferred lifetime state-changing behavior while valid_lft is infinity")
Cc: Yasushi Asano &lt;yasushi.asano@jp.fujitsu.com&gt;
Signed-off-by: Hannes Frederic Sowa &lt;hannes@stressinduktion.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In the past the IFA_PERMANENT flag indicated, that the valid and preferred
lifetime where ignored. Since change fad8da3e085ddf ("ipv6 addrconf: fix
preferred lifetime state-changing behavior while valid_lft is infinity")
we honour at least the preferred lifetime on those addresses. As such
the valid lifetime gets recalculated and updated to 0.

If loopback address is added manually this problem does not occur.
Also if NetworkManager manages IPv6, those addresses will get added via
inet6_rtm_newaddr and thus will have a correct lifetime, too.

Reported-by: François-Xavier Le Bail &lt;fx.lebail@yahoo.com&gt;
Reported-by: Damien Wyart &lt;damien.wyart@gmail.com&gt;
Fixes: fad8da3e085ddf ("ipv6 addrconf: fix preferred lifetime state-changing behavior while valid_lft is infinity")
Cc: Yasushi Asano &lt;yasushi.asano@jp.fujitsu.com&gt;
Signed-off-by: Hannes Frederic Sowa &lt;hannes@stressinduktion.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem</title>
<updated>2014-01-09T15:19:01+00:00</updated>
<author>
<name>John W. Linville</name>
<email>linville@tuxdriver.com</email>
</author>
<published>2014-01-09T15:19:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=0f74d82d80e653545f4190c96a25f3b6751a8370'/>
<id>0f74d82d80e653545f4190c96a25f3b6751a8370</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'nfc-fixes-3.13-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/nfc-fixes</title>
<updated>2014-01-08T18:36:17+00:00</updated>
<author>
<name>John W. Linville</name>
<email>linville@tuxdriver.com</email>
</author>
<published>2014-01-08T18:36:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=2eff7c791a18a31a6ede36172258c4e05d632fac'/>
<id>2eff7c791a18a31a6ede36172258c4e05d632fac</id>
<content type='text'>
Samuel Ortiz &lt;sameo@linux.intel.com&gt; says:

"This is the first NFC fixes pull request for 3.13.

It only contains one fix for a regression introduced with commit
e29a9e2ae165620d. Without this fix, we can not establish a p2p link in
target mode. Only initiator mode works."

Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Samuel Ortiz &lt;sameo@linux.intel.com&gt; says:

"This is the first NFC fixes pull request for 3.13.

It only contains one fix for a regression introduced with commit
e29a9e2ae165620d. Without this fix, we can not establish a p2p link in
target mode. Only initiator mode works."

Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf</title>
<updated>2014-01-07T23:38:17+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2014-01-07T23:38:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=a04c0e2c0d4f284503fc1249bb4d2d7064c0bd0c'/>
<id>a04c0e2c0d4f284503fc1249bb4d2d7064c0bd0c</id>
<content type='text'>
Pablo Neira Ayuso says:

====================
The following patchset contains two patches:

* fix the IRC NAT helper which was broken when adding (incomplete) IPv6
  support, from Daniel Borkmann.

* Refine the previous bugtrap that Jesper added to catch problems for the
  usage of the sequence adjustment extension in IPVs in Dec 16th, it may
  spam messages in case of finding a real bug.
====================

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pablo Neira Ayuso says:

====================
The following patchset contains two patches:

* fix the IRC NAT helper which was broken when adding (incomplete) IPv6
  support, from Daniel Borkmann.

* Refine the previous bugtrap that Jesper added to catch problems for the
  usage of the sequence adjustment extension in IPVs in Dec 16th, it may
  spam messages in case of finding a real bug.
====================

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tipc: correctly unlink packets from deferred packet queue</title>
<updated>2014-01-07T21:15:24+00:00</updated>
<author>
<name>Erik Hugne</name>
<email>erik.hugne@ericsson.com</email>
</author>
<published>2014-01-07T20:51:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=732256b9335f8456623bb772d86c2a24e3cafca2'/>
<id>732256b9335f8456623bb772d86c2a24e3cafca2</id>
<content type='text'>
When we pull a received packet from a link's 'deferred packets' queue
for processing, its 'next' pointer is not cleared, and still refers to
the next packet in that queue, if any. This is incorrect, but caused
no harm before commit 40ba3cdf542a469aaa9083fa041656e59b109b90 ("tipc:
message reassembly using fragment chain") was introduced. After that
commit, it may sometimes lead to the following oops:

general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC
Modules linked in: tipc
CPU: 4 PID: 0 Comm: swapper/4 Tainted: G        W 3.13.0-rc2+ #6
Hardware name: Bochs Bochs, BIOS Bochs 01/01/2007
task: ffff880017af4880 ti: ffff880017aee000 task.ti: ffff880017aee000
RIP: 0010:[&lt;ffffffff81710694&gt;]  [&lt;ffffffff81710694&gt;] skb_try_coalesce+0x44/0x3d0
RSP: 0018:ffff880016603a78  EFLAGS: 00010212
RAX: 6b6b6b6bd6d6d6d6 RBX: ffff880013106ac0 RCX: ffff880016603ad0
RDX: ffff880016603ad7 RSI: ffff88001223ed00 RDI: ffff880013106ac0
RBP: ffff880016603ab8 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000001 R11: 0000000000000000 R12: ffff88001223ed00
R13: ffff880016603ad0 R14: 000000000000058c R15: ffff880012297650
FS:  0000000000000000(0000) GS:ffff880016600000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 000000000805b000 CR3: 0000000011f5d000 CR4: 00000000000006e0
Stack:
 ffff880016603a88 ffffffff810a38ed ffff880016603aa8 ffff88001223ed00
 0000000000000001 ffff880012297648 ffff880016603b68 ffff880012297650
 ffff880016603b08 ffffffffa0006c51 ffff880016603b08 00ffffffa00005fc
Call Trace:
 &lt;IRQ&gt;
 [&lt;ffffffff810a38ed&gt;] ? trace_hardirqs_on+0xd/0x10
 [&lt;ffffffffa0006c51&gt;] tipc_link_recv_fragment+0xd1/0x1b0 [tipc]
 [&lt;ffffffffa0007214&gt;] tipc_recv_msg+0x4e4/0x920 [tipc]
 [&lt;ffffffffa00016f0&gt;] ? tipc_l2_rcv_msg+0x40/0x250 [tipc]
 [&lt;ffffffffa000177c&gt;] tipc_l2_rcv_msg+0xcc/0x250 [tipc]
 [&lt;ffffffffa00016f0&gt;] ? tipc_l2_rcv_msg+0x40/0x250 [tipc]
 [&lt;ffffffff8171e65b&gt;] __netif_receive_skb_core+0x80b/0xd00
 [&lt;ffffffff8171df94&gt;] ? __netif_receive_skb_core+0x144/0xd00
 [&lt;ffffffff8171eb76&gt;] __netif_receive_skb+0x26/0x70
 [&lt;ffffffff8171ed6d&gt;] netif_receive_skb+0x2d/0x200
 [&lt;ffffffff8171fe70&gt;] napi_gro_receive+0xb0/0x130
 [&lt;ffffffff815647c2&gt;] e1000_clean_rx_irq+0x2c2/0x530
 [&lt;ffffffff81565986&gt;] e1000_clean+0x266/0x9c0
 [&lt;ffffffff81985f7b&gt;] ? notifier_call_chain+0x2b/0x160
 [&lt;ffffffff8171f971&gt;] net_rx_action+0x141/0x310
 [&lt;ffffffff81051c1b&gt;] __do_softirq+0xeb/0x480
 [&lt;ffffffff819817bb&gt;] ? _raw_spin_unlock+0x2b/0x40
 [&lt;ffffffff810b8c42&gt;] ? handle_fasteoi_irq+0x72/0x100
 [&lt;ffffffff81052346&gt;] irq_exit+0x96/0xc0
 [&lt;ffffffff8198cbc3&gt;] do_IRQ+0x63/0xe0
 [&lt;ffffffff81981def&gt;] common_interrupt+0x6f/0x6f
 &lt;EOI&gt;

This happens when the last fragment of a message has passed through the
the receiving link's 'deferred packets' queue, and at least one other
packet was added to that queue while it was there. After the fragment
chain with the complete message has been successfully delivered to the
receiving socket, it is released. Since 'next' pointer of the last
fragment in the released chain now is non-NULL, we get the crash shown
above.

We fix this by clearing the 'next' pointer of all received packets,
including those being pulled from the 'deferred' queue, before they
undergo any further processing.

Fixes: 40ba3cdf542a4 ("tipc: message reassembly using fragment chain")
Signed-off-by: Erik Hugne &lt;erik.hugne@ericsson.com&gt;
Reported-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Reviewed-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
Signed-off-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When we pull a received packet from a link's 'deferred packets' queue
for processing, its 'next' pointer is not cleared, and still refers to
the next packet in that queue, if any. This is incorrect, but caused
no harm before commit 40ba3cdf542a469aaa9083fa041656e59b109b90 ("tipc:
message reassembly using fragment chain") was introduced. After that
commit, it may sometimes lead to the following oops:

general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC
Modules linked in: tipc
CPU: 4 PID: 0 Comm: swapper/4 Tainted: G        W 3.13.0-rc2+ #6
Hardware name: Bochs Bochs, BIOS Bochs 01/01/2007
task: ffff880017af4880 ti: ffff880017aee000 task.ti: ffff880017aee000
RIP: 0010:[&lt;ffffffff81710694&gt;]  [&lt;ffffffff81710694&gt;] skb_try_coalesce+0x44/0x3d0
RSP: 0018:ffff880016603a78  EFLAGS: 00010212
RAX: 6b6b6b6bd6d6d6d6 RBX: ffff880013106ac0 RCX: ffff880016603ad0
RDX: ffff880016603ad7 RSI: ffff88001223ed00 RDI: ffff880013106ac0
RBP: ffff880016603ab8 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000001 R11: 0000000000000000 R12: ffff88001223ed00
R13: ffff880016603ad0 R14: 000000000000058c R15: ffff880012297650
FS:  0000000000000000(0000) GS:ffff880016600000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 000000000805b000 CR3: 0000000011f5d000 CR4: 00000000000006e0
Stack:
 ffff880016603a88 ffffffff810a38ed ffff880016603aa8 ffff88001223ed00
 0000000000000001 ffff880012297648 ffff880016603b68 ffff880012297650
 ffff880016603b08 ffffffffa0006c51 ffff880016603b08 00ffffffa00005fc
Call Trace:
 &lt;IRQ&gt;
 [&lt;ffffffff810a38ed&gt;] ? trace_hardirqs_on+0xd/0x10
 [&lt;ffffffffa0006c51&gt;] tipc_link_recv_fragment+0xd1/0x1b0 [tipc]
 [&lt;ffffffffa0007214&gt;] tipc_recv_msg+0x4e4/0x920 [tipc]
 [&lt;ffffffffa00016f0&gt;] ? tipc_l2_rcv_msg+0x40/0x250 [tipc]
 [&lt;ffffffffa000177c&gt;] tipc_l2_rcv_msg+0xcc/0x250 [tipc]
 [&lt;ffffffffa00016f0&gt;] ? tipc_l2_rcv_msg+0x40/0x250 [tipc]
 [&lt;ffffffff8171e65b&gt;] __netif_receive_skb_core+0x80b/0xd00
 [&lt;ffffffff8171df94&gt;] ? __netif_receive_skb_core+0x144/0xd00
 [&lt;ffffffff8171eb76&gt;] __netif_receive_skb+0x26/0x70
 [&lt;ffffffff8171ed6d&gt;] netif_receive_skb+0x2d/0x200
 [&lt;ffffffff8171fe70&gt;] napi_gro_receive+0xb0/0x130
 [&lt;ffffffff815647c2&gt;] e1000_clean_rx_irq+0x2c2/0x530
 [&lt;ffffffff81565986&gt;] e1000_clean+0x266/0x9c0
 [&lt;ffffffff81985f7b&gt;] ? notifier_call_chain+0x2b/0x160
 [&lt;ffffffff8171f971&gt;] net_rx_action+0x141/0x310
 [&lt;ffffffff81051c1b&gt;] __do_softirq+0xeb/0x480
 [&lt;ffffffff819817bb&gt;] ? _raw_spin_unlock+0x2b/0x40
 [&lt;ffffffff810b8c42&gt;] ? handle_fasteoi_irq+0x72/0x100
 [&lt;ffffffff81052346&gt;] irq_exit+0x96/0xc0
 [&lt;ffffffff8198cbc3&gt;] do_IRQ+0x63/0xe0
 [&lt;ffffffff81981def&gt;] common_interrupt+0x6f/0x6f
 &lt;EOI&gt;

This happens when the last fragment of a message has passed through the
the receiving link's 'deferred packets' queue, and at least one other
packet was added to that queue while it was there. After the fragment
chain with the complete message has been successfully delivered to the
receiving socket, it is released. Since 'next' pointer of the last
fragment in the released chain now is non-NULL, we get the crash shown
above.

We fix this by clearing the 'next' pointer of all received packets,
including those being pulled from the 'deferred' queue, before they
undergo any further processing.

Fixes: 40ba3cdf542a4 ("tipc: message reassembly using fragment chain")
Signed-off-by: Erik Hugne &lt;erik.hugne@ericsson.com&gt;
Reported-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Reviewed-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
Signed-off-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ipv6: pcpu_tstats.syncp should be initialised in ip6_vti.c</title>
<updated>2014-01-07T19:12:46+00:00</updated>
<author>
<name>Li RongQing</name>
<email>roy.qing.li@gmail.com</email>
</author>
<published>2014-01-07T07:39:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=657e5d19657542631461e72fdc375b1e83e72070'/>
<id>657e5d19657542631461e72fdc375b1e83e72070</id>
<content type='text'>
initialise pcpu_tstats.syncp to kill the calltrace
[   11.973950] Call Trace:
[   11.973950]  [&lt;819bbaff&gt;] dump_stack+0x48/0x60
[   11.973950]  [&lt;819bbaff&gt;] dump_stack+0x48/0x60
[   11.973950]  [&lt;81078dcf&gt;] __lock_acquire.isra.22+0x1bf/0xc10
[   11.973950]  [&lt;81078dcf&gt;] __lock_acquire.isra.22+0x1bf/0xc10
[   11.973950]  [&lt;81079fa7&gt;] lock_acquire+0x77/0xa0
[   11.973950]  [&lt;81079fa7&gt;] lock_acquire+0x77/0xa0
[   11.973950]  [&lt;817ca7ab&gt;] ? dev_get_stats+0xcb/0x130
[   11.973950]  [&lt;817ca7ab&gt;] ? dev_get_stats+0xcb/0x130
[   11.973950]  [&lt;8183862d&gt;] ip_tunnel_get_stats64+0x6d/0x230
[   11.973950]  [&lt;8183862d&gt;] ip_tunnel_get_stats64+0x6d/0x230
[   11.973950]  [&lt;817ca7ab&gt;] ? dev_get_stats+0xcb/0x130
[   11.973950]  [&lt;817ca7ab&gt;] ? dev_get_stats+0xcb/0x130
[   11.973950]  [&lt;811cf8c1&gt;] ? __nla_reserve+0x21/0xd0
[   11.973950]  [&lt;811cf8c1&gt;] ? __nla_reserve+0x21/0xd0
[   11.973950]  [&lt;817ca7ab&gt;] dev_get_stats+0xcb/0x130
[   11.973950]  [&lt;817ca7ab&gt;] dev_get_stats+0xcb/0x130
[   11.973950]  [&lt;817d5409&gt;] rtnl_fill_ifinfo+0x569/0xe20
[   11.973950]  [&lt;817d5409&gt;] rtnl_fill_ifinfo+0x569/0xe20
[   11.973950]  [&lt;810352e0&gt;] ? kvm_clock_read+0x20/0x30
[   11.973950]  [&lt;810352e0&gt;] ? kvm_clock_read+0x20/0x30
[   11.973950]  [&lt;81008e38&gt;] ? sched_clock+0x8/0x10
[   11.973950]  [&lt;81008e38&gt;] ? sched_clock+0x8/0x10
[   11.973950]  [&lt;8106ba45&gt;] ? sched_clock_local+0x25/0x170
[   11.973950]  [&lt;8106ba45&gt;] ? sched_clock_local+0x25/0x170
[   11.973950]  [&lt;810da6bd&gt;] ? __kmalloc+0x3d/0x90
[   11.973950]  [&lt;810da6bd&gt;] ? __kmalloc+0x3d/0x90
[   11.973950]  [&lt;817b8c10&gt;] ? __kmalloc_reserve.isra.41+0x20/0x70
[   11.973950]  [&lt;817b8c10&gt;] ? __kmalloc_reserve.isra.41+0x20/0x70
[   11.973950]  [&lt;810da81a&gt;] ? slob_alloc_node+0x2a/0x60
[   11.973950]  [&lt;810da81a&gt;] ? slob_alloc_node+0x2a/0x60
[   11.973950]  [&lt;817b919a&gt;] ? __alloc_skb+0x6a/0x2b0
[   11.973950]  [&lt;817b919a&gt;] ? __alloc_skb+0x6a/0x2b0
[   11.973950]  [&lt;817d8795&gt;] rtmsg_ifinfo+0x65/0xe0
[   11.973950]  [&lt;817d8795&gt;] rtmsg_ifinfo+0x65/0xe0
[   11.973950]  [&lt;817cbd31&gt;] register_netdevice+0x531/0x5a0
[   11.973950]  [&lt;817cbd31&gt;] register_netdevice+0x531/0x5a0
[   11.973950]  [&lt;81892b87&gt;] ? ip6_tnl_get_cap+0x27/0x90
[   11.973950]  [&lt;81892b87&gt;] ? ip6_tnl_get_cap+0x27/0x90
[   11.973950]  [&lt;817cbdb6&gt;] register_netdev+0x16/0x30
[   11.973950]  [&lt;817cbdb6&gt;] register_netdev+0x16/0x30
[   11.973950]  [&lt;81f574a6&gt;] vti6_init_net+0x1c4/0x1d4
[   11.973950]  [&lt;81f574a6&gt;] vti6_init_net+0x1c4/0x1d4
[   11.973950]  [&lt;81f573af&gt;] ? vti6_init_net+0xcd/0x1d4
[   11.973950]  [&lt;81f573af&gt;] ? vti6_init_net+0xcd/0x1d4
[   11.973950]  [&lt;817c16df&gt;] ops_init.constprop.11+0x17f/0x1c0
[   11.973950]  [&lt;817c16df&gt;] ops_init.constprop.11+0x17f/0x1c0
[   11.973950]  [&lt;817c1779&gt;] register_pernet_operations.isra.9+0x59/0x90
[   11.973950]  [&lt;817c1779&gt;] register_pernet_operations.isra.9+0x59/0x90
[   11.973950]  [&lt;817c18d1&gt;] register_pernet_device+0x21/0x60
[   11.973950]  [&lt;817c18d1&gt;] register_pernet_device+0x21/0x60
[   11.973950]  [&lt;81f574b6&gt;] ? vti6_init_net+0x1d4/0x1d4
[   11.973950]  [&lt;81f574b6&gt;] ? vti6_init_net+0x1d4/0x1d4
[   11.973950]  [&lt;81f574c7&gt;] vti6_tunnel_init+0x11/0x68
[   11.973950]  [&lt;81f574c7&gt;] vti6_tunnel_init+0x11/0x68
[   11.973950]  [&lt;81f572a1&gt;] ? mip6_init+0x73/0xb4
[   11.973950]  [&lt;81f572a1&gt;] ? mip6_init+0x73/0xb4
[   11.973950]  [&lt;81f0cba4&gt;] do_one_initcall+0xbb/0x15b
[   11.973950]  [&lt;81f0cba4&gt;] do_one_initcall+0xbb/0x15b
[   11.973950]  [&lt;811a00d8&gt;] ? sha_transform+0x528/0x1150
[   11.973950]  [&lt;811a00d8&gt;] ? sha_transform+0x528/0x1150
[   11.973950]  [&lt;81f0c544&gt;] ? repair_env_string+0x12/0x51
[   11.973950]  [&lt;81f0c544&gt;] ? repair_env_string+0x12/0x51
[   11.973950]  [&lt;8105c30d&gt;] ? parse_args+0x2ad/0x440
[   11.973950]  [&lt;8105c30d&gt;] ? parse_args+0x2ad/0x440
[   11.973950]  [&lt;810546be&gt;] ? __usermodehelper_set_disable_depth+0x3e/0x50
[   11.973950]  [&lt;810546be&gt;] ? __usermodehelper_set_disable_depth+0x3e/0x50
[   11.973950]  [&lt;81f0cd27&gt;] kernel_init_freeable+0xe3/0x182
[   11.973950]  [&lt;81f0cd27&gt;] kernel_init_freeable+0xe3/0x182
[   11.973950]  [&lt;81f0c532&gt;] ? do_early_param+0x7a/0x7a
[   11.973950]  [&lt;81f0c532&gt;] ? do_early_param+0x7a/0x7a
[   11.973950]  [&lt;819b5b1b&gt;] kernel_init+0xb/0x100
[   11.973950]  [&lt;819b5b1b&gt;] kernel_init+0xb/0x100
[   11.973950]  [&lt;819cebf7&gt;] ret_from_kernel_thread+0x1b/0x28
[   11.973950]  [&lt;819cebf7&gt;] ret_from_kernel_thread+0x1b/0x28
[   11.973950]  [&lt;819b5b10&gt;] ? rest_init+0xc0/0xc0
[   11.973950]  [&lt;819b5b10&gt;] ? rest_init+0xc0/0xc0

Before 469bdcefdc ("ipv6: fix the use of pcpu_tstats in ip6_vti.c"),
the pcpu_tstats.syncp is not used to pretect the 64bit elements of
pcpu_tstats, so not appear this calltrace.

Reported-by: Fengguang Wu &lt;fengguang.wu@intel.com&gt;
Signed-off-by: Li RongQing &lt;roy.qing.li@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
initialise pcpu_tstats.syncp to kill the calltrace
[   11.973950] Call Trace:
[   11.973950]  [&lt;819bbaff&gt;] dump_stack+0x48/0x60
[   11.973950]  [&lt;819bbaff&gt;] dump_stack+0x48/0x60
[   11.973950]  [&lt;81078dcf&gt;] __lock_acquire.isra.22+0x1bf/0xc10
[   11.973950]  [&lt;81078dcf&gt;] __lock_acquire.isra.22+0x1bf/0xc10
[   11.973950]  [&lt;81079fa7&gt;] lock_acquire+0x77/0xa0
[   11.973950]  [&lt;81079fa7&gt;] lock_acquire+0x77/0xa0
[   11.973950]  [&lt;817ca7ab&gt;] ? dev_get_stats+0xcb/0x130
[   11.973950]  [&lt;817ca7ab&gt;] ? dev_get_stats+0xcb/0x130
[   11.973950]  [&lt;8183862d&gt;] ip_tunnel_get_stats64+0x6d/0x230
[   11.973950]  [&lt;8183862d&gt;] ip_tunnel_get_stats64+0x6d/0x230
[   11.973950]  [&lt;817ca7ab&gt;] ? dev_get_stats+0xcb/0x130
[   11.973950]  [&lt;817ca7ab&gt;] ? dev_get_stats+0xcb/0x130
[   11.973950]  [&lt;811cf8c1&gt;] ? __nla_reserve+0x21/0xd0
[   11.973950]  [&lt;811cf8c1&gt;] ? __nla_reserve+0x21/0xd0
[   11.973950]  [&lt;817ca7ab&gt;] dev_get_stats+0xcb/0x130
[   11.973950]  [&lt;817ca7ab&gt;] dev_get_stats+0xcb/0x130
[   11.973950]  [&lt;817d5409&gt;] rtnl_fill_ifinfo+0x569/0xe20
[   11.973950]  [&lt;817d5409&gt;] rtnl_fill_ifinfo+0x569/0xe20
[   11.973950]  [&lt;810352e0&gt;] ? kvm_clock_read+0x20/0x30
[   11.973950]  [&lt;810352e0&gt;] ? kvm_clock_read+0x20/0x30
[   11.973950]  [&lt;81008e38&gt;] ? sched_clock+0x8/0x10
[   11.973950]  [&lt;81008e38&gt;] ? sched_clock+0x8/0x10
[   11.973950]  [&lt;8106ba45&gt;] ? sched_clock_local+0x25/0x170
[   11.973950]  [&lt;8106ba45&gt;] ? sched_clock_local+0x25/0x170
[   11.973950]  [&lt;810da6bd&gt;] ? __kmalloc+0x3d/0x90
[   11.973950]  [&lt;810da6bd&gt;] ? __kmalloc+0x3d/0x90
[   11.973950]  [&lt;817b8c10&gt;] ? __kmalloc_reserve.isra.41+0x20/0x70
[   11.973950]  [&lt;817b8c10&gt;] ? __kmalloc_reserve.isra.41+0x20/0x70
[   11.973950]  [&lt;810da81a&gt;] ? slob_alloc_node+0x2a/0x60
[   11.973950]  [&lt;810da81a&gt;] ? slob_alloc_node+0x2a/0x60
[   11.973950]  [&lt;817b919a&gt;] ? __alloc_skb+0x6a/0x2b0
[   11.973950]  [&lt;817b919a&gt;] ? __alloc_skb+0x6a/0x2b0
[   11.973950]  [&lt;817d8795&gt;] rtmsg_ifinfo+0x65/0xe0
[   11.973950]  [&lt;817d8795&gt;] rtmsg_ifinfo+0x65/0xe0
[   11.973950]  [&lt;817cbd31&gt;] register_netdevice+0x531/0x5a0
[   11.973950]  [&lt;817cbd31&gt;] register_netdevice+0x531/0x5a0
[   11.973950]  [&lt;81892b87&gt;] ? ip6_tnl_get_cap+0x27/0x90
[   11.973950]  [&lt;81892b87&gt;] ? ip6_tnl_get_cap+0x27/0x90
[   11.973950]  [&lt;817cbdb6&gt;] register_netdev+0x16/0x30
[   11.973950]  [&lt;817cbdb6&gt;] register_netdev+0x16/0x30
[   11.973950]  [&lt;81f574a6&gt;] vti6_init_net+0x1c4/0x1d4
[   11.973950]  [&lt;81f574a6&gt;] vti6_init_net+0x1c4/0x1d4
[   11.973950]  [&lt;81f573af&gt;] ? vti6_init_net+0xcd/0x1d4
[   11.973950]  [&lt;81f573af&gt;] ? vti6_init_net+0xcd/0x1d4
[   11.973950]  [&lt;817c16df&gt;] ops_init.constprop.11+0x17f/0x1c0
[   11.973950]  [&lt;817c16df&gt;] ops_init.constprop.11+0x17f/0x1c0
[   11.973950]  [&lt;817c1779&gt;] register_pernet_operations.isra.9+0x59/0x90
[   11.973950]  [&lt;817c1779&gt;] register_pernet_operations.isra.9+0x59/0x90
[   11.973950]  [&lt;817c18d1&gt;] register_pernet_device+0x21/0x60
[   11.973950]  [&lt;817c18d1&gt;] register_pernet_device+0x21/0x60
[   11.973950]  [&lt;81f574b6&gt;] ? vti6_init_net+0x1d4/0x1d4
[   11.973950]  [&lt;81f574b6&gt;] ? vti6_init_net+0x1d4/0x1d4
[   11.973950]  [&lt;81f574c7&gt;] vti6_tunnel_init+0x11/0x68
[   11.973950]  [&lt;81f574c7&gt;] vti6_tunnel_init+0x11/0x68
[   11.973950]  [&lt;81f572a1&gt;] ? mip6_init+0x73/0xb4
[   11.973950]  [&lt;81f572a1&gt;] ? mip6_init+0x73/0xb4
[   11.973950]  [&lt;81f0cba4&gt;] do_one_initcall+0xbb/0x15b
[   11.973950]  [&lt;81f0cba4&gt;] do_one_initcall+0xbb/0x15b
[   11.973950]  [&lt;811a00d8&gt;] ? sha_transform+0x528/0x1150
[   11.973950]  [&lt;811a00d8&gt;] ? sha_transform+0x528/0x1150
[   11.973950]  [&lt;81f0c544&gt;] ? repair_env_string+0x12/0x51
[   11.973950]  [&lt;81f0c544&gt;] ? repair_env_string+0x12/0x51
[   11.973950]  [&lt;8105c30d&gt;] ? parse_args+0x2ad/0x440
[   11.973950]  [&lt;8105c30d&gt;] ? parse_args+0x2ad/0x440
[   11.973950]  [&lt;810546be&gt;] ? __usermodehelper_set_disable_depth+0x3e/0x50
[   11.973950]  [&lt;810546be&gt;] ? __usermodehelper_set_disable_depth+0x3e/0x50
[   11.973950]  [&lt;81f0cd27&gt;] kernel_init_freeable+0xe3/0x182
[   11.973950]  [&lt;81f0cd27&gt;] kernel_init_freeable+0xe3/0x182
[   11.973950]  [&lt;81f0c532&gt;] ? do_early_param+0x7a/0x7a
[   11.973950]  [&lt;81f0c532&gt;] ? do_early_param+0x7a/0x7a
[   11.973950]  [&lt;819b5b1b&gt;] kernel_init+0xb/0x100
[   11.973950]  [&lt;819b5b1b&gt;] kernel_init+0xb/0x100
[   11.973950]  [&lt;819cebf7&gt;] ret_from_kernel_thread+0x1b/0x28
[   11.973950]  [&lt;819cebf7&gt;] ret_from_kernel_thread+0x1b/0x28
[   11.973950]  [&lt;819b5b10&gt;] ? rest_init+0xc0/0xc0
[   11.973950]  [&lt;819b5b10&gt;] ? rest_init+0xc0/0xc0

Before 469bdcefdc ("ipv6: fix the use of pcpu_tstats in ip6_vti.c"),
the pcpu_tstats.syncp is not used to pretect the 64bit elements of
pcpu_tstats, so not appear this calltrace.

Reported-by: Fengguang Wu &lt;fengguang.wu@intel.com&gt;
Signed-off-by: Li RongQing &lt;roy.qing.li@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>bridge: use spin_lock_bh() in br_multicast_set_hash_max</title>
<updated>2014-01-06T21:39:47+00:00</updated>
<author>
<name>Curt Brune</name>
<email>curt@cumulusnetworks.com</email>
</author>
<published>2014-01-06T19:00:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=fe0d692bbc645786bce1a98439e548ae619269f5'/>
<id>fe0d692bbc645786bce1a98439e548ae619269f5</id>
<content type='text'>
br_multicast_set_hash_max() is called from process context in
net/bridge/br_sysfs_br.c by the sysfs store_hash_max() function.

br_multicast_set_hash_max() calls spin_lock(&amp;br-&gt;multicast_lock),
which can deadlock the CPU if a softirq that also tries to take the
same lock interrupts br_multicast_set_hash_max() while the lock is
held .  This can happen quite easily when any of the bridge multicast
timers expire, which try to take the same lock.

The fix here is to use spin_lock_bh(), preventing other softirqs from
executing on this CPU.

Steps to reproduce:

1. Create a bridge with several interfaces (I used 4).
2. Set the "multicast query interval" to a low number, like 2.
3. Enable the bridge as a multicast querier.
4. Repeatedly set the bridge hash_max parameter via sysfs.

  # brctl addbr br0
  # brctl addif br0 eth1 eth2 eth3 eth4
  # brctl setmcqi br0 2
  # brctl setmcquerier br0 1

  # while true ; do echo 4096 &gt; /sys/class/net/br0/bridge/hash_max; done

Signed-off-by: Curt Brune &lt;curt@cumulusnetworks.com&gt;
Signed-off-by: Scott Feldman &lt;sfeldma@cumulusnetworks.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
br_multicast_set_hash_max() is called from process context in
net/bridge/br_sysfs_br.c by the sysfs store_hash_max() function.

br_multicast_set_hash_max() calls spin_lock(&amp;br-&gt;multicast_lock),
which can deadlock the CPU if a softirq that also tries to take the
same lock interrupts br_multicast_set_hash_max() while the lock is
held .  This can happen quite easily when any of the bridge multicast
timers expire, which try to take the same lock.

The fix here is to use spin_lock_bh(), preventing other softirqs from
executing on this CPU.

Steps to reproduce:

1. Create a bridge with several interfaces (I used 4).
2. Set the "multicast query interval" to a low number, like 2.
3. Enable the bridge as a multicast querier.
4. Repeatedly set the bridge hash_max parameter via sysfs.

  # brctl addbr br0
  # brctl addif br0 eth1 eth2 eth3 eth4
  # brctl setmcqi br0 2
  # brctl setmcquerier br0 1

  # while true ; do echo 4096 &gt; /sys/class/net/br0/bridge/hash_max; done

Signed-off-by: Curt Brune &lt;curt@cumulusnetworks.com&gt;
Signed-off-by: Scott Feldman &lt;sfeldma@cumulusnetworks.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ipv6: don't install anycast address for /128 addresses on routers</title>
<updated>2014-01-06T21:32:43+00:00</updated>
<author>
<name>Hannes Frederic Sowa</name>
<email>hannes@stressinduktion.org</email>
</author>
<published>2014-01-06T16:53:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=88ad31491e21f5dec347911d9804c673af414a09'/>
<id>88ad31491e21f5dec347911d9804c673af414a09</id>
<content type='text'>
It does not make sense to create an anycast address for an /128-prefix.
Suppress it.

As 32019e651c6fce ("ipv6: Do not leave router anycast address for /127
prefixes.") shows we also may not leave them, because we could accidentally
remove an anycast address the user has allocated or got added via another
prefix.

Cc: François-Xavier Le Bail &lt;fx.lebail@yahoo.com&gt;
Cc: Thomas Haller &lt;thaller@redhat.com&gt;
Cc: Jiri Pirko &lt;jiri@resnulli.us&gt;
Signed-off-by: Hannes Frederic Sowa &lt;hannes@stressinduktion.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It does not make sense to create an anycast address for an /128-prefix.
Suppress it.

As 32019e651c6fce ("ipv6: Do not leave router anycast address for /127
prefixes.") shows we also may not leave them, because we could accidentally
remove an anycast address the user has allocated or got added via another
prefix.

Cc: François-Xavier Le Bail &lt;fx.lebail@yahoo.com&gt;
Cc: Thomas Haller &lt;thaller@redhat.com&gt;
Cc: Jiri Pirko &lt;jiri@resnulli.us&gt;
Signed-off-by: Hannes Frederic Sowa &lt;hannes@stressinduktion.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
</feed>
