<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/net, branch linux-3.13.y</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>net: vxlan: fix crash when interface is created with no group</title>
<updated>2014-04-14T13:47:22+00:00</updated>
<author>
<name>Mike Rapoport</name>
<email>mike.rapoport@ravellosystems.com</email>
</author>
<published>2014-04-01T06:23:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=c95176f32b88f95a0d6592ded5387d4cf076d83b'/>
<id>c95176f32b88f95a0d6592ded5387d4cf076d83b</id>
<content type='text'>
[ Upstream commit 5933a7bbb5de66482ea8aa874a7ebaf8e67603c4 ]

If the vxlan interface is created without explicit group definition,
there are corner cases which may cause kernel panic.

For instance, in the following scenario:

node A:
$ ip link add dev vxlan42  address 2c:c2:60:00:10:20 type vxlan id 42
$ ip addr add dev vxlan42 10.0.0.1/24
$ ip link set up dev vxlan42
$ arp -i vxlan42 -s 10.0.0.2 2c:c2:60:00:01:02
$ bridge fdb add dev vxlan42 to 2c:c2:60:00:01:02 dst &lt;IPv4 address&gt;
$ ping 10.0.0.2

node B:
$ ip link add dev vxlan42 address 2c:c2:60:00:01:02 type vxlan id 42
$ ip addr add dev vxlan42 10.0.0.2/24
$ ip link set up dev vxlan42
$ arp -i vxlan42 -s 10.0.0.1 2c:c2:60:00:10:20

node B crashes:

 vxlan42: 2c:c2:60:00:10:20 migrated from 4011:eca4:c0a8:6466:c0a8:6415:8e09:2118 to (invalid address)
 vxlan42: 2c:c2:60:00:10:20 migrated from 4011:eca4:c0a8:6466:c0a8:6415:8e09:2118 to (invalid address)
 BUG: unable to handle kernel NULL pointer dereference at 0000000000000046
 IP: [&lt;ffffffff8143c459&gt;] ip6_route_output+0x58/0x82
 PGD 7bd89067 PUD 7bd4e067 PMD 0
 Oops: 0000 [#1] SMP
 Modules linked in:
 CPU: 1 PID: 0 Comm: swapper/1 Not tainted 3.14.0-rc8-hvx-xen-00019-g97a5221-dirty #154
 Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
 task: ffff88007c774f50 ti: ffff88007c79c000 task.ti: ffff88007c79c000
 RIP: 0010:[&lt;ffffffff8143c459&gt;]  [&lt;ffffffff8143c459&gt;] ip6_route_output+0x58/0x82
 RSP: 0018:ffff88007fd03668  EFLAGS: 00010282
 RAX: 0000000000000000 RBX: ffffffff8186a000 RCX: 0000000000000040
 RDX: 0000000000000000 RSI: ffff88007b0e4a80 RDI: ffff88007fd03754
 RBP: ffff88007fd03688 R08: ffff88007b0e4a80 R09: 0000000000000000
 R10: 0200000a0100000a R11: 0001002200000000 R12: ffff88007fd03740
 R13: ffff88007b0e4a80 R14: ffff88007b0e4a80 R15: ffff88007bba0c50
 FS:  0000000000000000(0000) GS:ffff88007fd00000(0000) knlGS:0000000000000000
 CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
 CR2: 0000000000000046 CR3: 000000007bb60000 CR4: 00000000000006e0
 Stack:
  0000000000000000 ffff88007fd037a0 ffffffff8186a000 ffff88007fd03740
  ffff88007fd036c8 ffffffff814320bb 0000000000006e49 ffff88007b8b7360
  ffff88007bdbf200 ffff88007bcbc000 ffff88007b8b7000 ffff88007b8b7360
 Call Trace:
  &lt;IRQ&gt;
  [&lt;ffffffff814320bb&gt;] ip6_dst_lookup_tail+0x2d/0xa4
  [&lt;ffffffff814322a5&gt;] ip6_dst_lookup+0x10/0x12
  [&lt;ffffffff81323b4e&gt;] vxlan_xmit_one+0x32a/0x68c
  [&lt;ffffffff814a325a&gt;] ? _raw_spin_unlock_irqrestore+0x12/0x14
  [&lt;ffffffff8104c551&gt;] ? lock_timer_base.isra.23+0x26/0x4b
  [&lt;ffffffff8132451a&gt;] vxlan_xmit+0x66a/0x6a8
  [&lt;ffffffff8141a365&gt;] ? ipt_do_table+0x35f/0x37e
  [&lt;ffffffff81204ba2&gt;] ? selinux_ip_postroute+0x41/0x26e
  [&lt;ffffffff8139d0c1&gt;] dev_hard_start_xmit+0x2ce/0x3ce
  [&lt;ffffffff8139d491&gt;] __dev_queue_xmit+0x2d0/0x392
  [&lt;ffffffff813b380f&gt;] ? eth_header+0x28/0xb5
  [&lt;ffffffff8139d569&gt;] dev_queue_xmit+0xb/0xd
  [&lt;ffffffff813a5aa6&gt;] neigh_resolve_output+0x134/0x152
  [&lt;ffffffff813db741&gt;] ip_finish_output2+0x236/0x299
  [&lt;ffffffff813dc074&gt;] ip_finish_output+0x98/0x9d
  [&lt;ffffffff813dc749&gt;] ip_output+0x62/0x67
  [&lt;ffffffff813da9f2&gt;] dst_output+0xf/0x11
  [&lt;ffffffff813dc11c&gt;] ip_local_out+0x1b/0x1f
  [&lt;ffffffff813dcf1b&gt;] ip_send_skb+0x11/0x37
  [&lt;ffffffff813dcf70&gt;] ip_push_pending_frames+0x2f/0x33
  [&lt;ffffffff813ff732&gt;] icmp_push_reply+0x106/0x115
  [&lt;ffffffff813ff9e4&gt;] icmp_reply+0x142/0x164
  [&lt;ffffffff813ffb3b&gt;] icmp_echo.part.16+0x46/0x48
  [&lt;ffffffff813c1d30&gt;] ? nf_iterate+0x43/0x80
  [&lt;ffffffff813d8037&gt;] ? xfrm4_policy_check.constprop.11+0x52/0x52
  [&lt;ffffffff813ffb62&gt;] icmp_echo+0x25/0x27
  [&lt;ffffffff814005f7&gt;] icmp_rcv+0x1d2/0x20a
  [&lt;ffffffff813d8037&gt;] ? xfrm4_policy_check.constprop.11+0x52/0x52
  [&lt;ffffffff813d810d&gt;] ip_local_deliver_finish+0xd6/0x14f
  [&lt;ffffffff813d8037&gt;] ? xfrm4_policy_check.constprop.11+0x52/0x52
  [&lt;ffffffff813d7fde&gt;] NF_HOOK.constprop.10+0x4c/0x53
  [&lt;ffffffff813d82bf&gt;] ip_local_deliver+0x4a/0x4f
  [&lt;ffffffff813d7f7b&gt;] ip_rcv_finish+0x253/0x26a
  [&lt;ffffffff813d7d28&gt;] ? inet_add_protocol+0x3e/0x3e
  [&lt;ffffffff813d7fde&gt;] NF_HOOK.constprop.10+0x4c/0x53
  [&lt;ffffffff813d856a&gt;] ip_rcv+0x2a6/0x2ec
  [&lt;ffffffff8139a9a0&gt;] __netif_receive_skb_core+0x43e/0x478
  [&lt;ffffffff812a346f&gt;] ? virtqueue_poll+0x16/0x27
  [&lt;ffffffff8139aa2f&gt;] __netif_receive_skb+0x55/0x5a
  [&lt;ffffffff8139aaaa&gt;] process_backlog+0x76/0x12f
  [&lt;ffffffff8139add8&gt;] net_rx_action+0xa2/0x1ab
  [&lt;ffffffff81047847&gt;] __do_softirq+0xca/0x1d1
  [&lt;ffffffff81047ace&gt;] irq_exit+0x3e/0x85
  [&lt;ffffffff8100b98b&gt;] do_IRQ+0xa9/0xc4
  [&lt;ffffffff814a37ad&gt;] common_interrupt+0x6d/0x6d
  &lt;EOI&gt;
  [&lt;ffffffff810378db&gt;] ? native_safe_halt+0x6/0x8
  [&lt;ffffffff810110c7&gt;] default_idle+0x9/0xd
  [&lt;ffffffff81011694&gt;] arch_cpu_idle+0x13/0x1c
  [&lt;ffffffff8107480d&gt;] cpu_startup_entry+0xbc/0x137
  [&lt;ffffffff8102e741&gt;] start_secondary+0x1a0/0x1a5
 Code: 24 14 e8 f1 e5 01 00 31 d2 a8 32 0f 95 c2 49 8b 44 24 2c 49 0b 44 24 24 74 05 83 ca 04 eb 1c 4d 85 ed 74 17 49 8b 85 a8 02 00 00 &lt;66&gt; 8b 40 46 66 c1 e8 07 83 e0 07 c1 e0 03 09 c2 4c 89 e6 48 89
 RIP  [&lt;ffffffff8143c459&gt;] ip6_route_output+0x58/0x82
  RSP &lt;ffff88007fd03668&gt;
 CR2: 0000000000000046
 ---[ end trace 4612329caab37efd ]---

When vxlan interface is created without explicit group definition, the
default_dst protocol family is initialiazed to AF_UNSPEC and the driver
assumes IPv4 configuration. On the other side, the default_dst protocol
family is used to differentiate between IPv4 and IPv6 cases and, since,
AF_UNSPEC != AF_INET, the processing takes the IPv6 path.

Making the IPv4 assumption explicit by settting default_dst protocol
family to AF_INET4 and preventing mixing of IPv4 and IPv6 addresses in
snooped fdb entries fixes the corner case crashes.

Signed-off-by: Mike Rapoport &lt;mike.rapoport@ravellosystems.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 5933a7bbb5de66482ea8aa874a7ebaf8e67603c4 ]

If the vxlan interface is created without explicit group definition,
there are corner cases which may cause kernel panic.

For instance, in the following scenario:

node A:
$ ip link add dev vxlan42  address 2c:c2:60:00:10:20 type vxlan id 42
$ ip addr add dev vxlan42 10.0.0.1/24
$ ip link set up dev vxlan42
$ arp -i vxlan42 -s 10.0.0.2 2c:c2:60:00:01:02
$ bridge fdb add dev vxlan42 to 2c:c2:60:00:01:02 dst &lt;IPv4 address&gt;
$ ping 10.0.0.2

node B:
$ ip link add dev vxlan42 address 2c:c2:60:00:01:02 type vxlan id 42
$ ip addr add dev vxlan42 10.0.0.2/24
$ ip link set up dev vxlan42
$ arp -i vxlan42 -s 10.0.0.1 2c:c2:60:00:10:20

node B crashes:

 vxlan42: 2c:c2:60:00:10:20 migrated from 4011:eca4:c0a8:6466:c0a8:6415:8e09:2118 to (invalid address)
 vxlan42: 2c:c2:60:00:10:20 migrated from 4011:eca4:c0a8:6466:c0a8:6415:8e09:2118 to (invalid address)
 BUG: unable to handle kernel NULL pointer dereference at 0000000000000046
 IP: [&lt;ffffffff8143c459&gt;] ip6_route_output+0x58/0x82
 PGD 7bd89067 PUD 7bd4e067 PMD 0
 Oops: 0000 [#1] SMP
 Modules linked in:
 CPU: 1 PID: 0 Comm: swapper/1 Not tainted 3.14.0-rc8-hvx-xen-00019-g97a5221-dirty #154
 Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
 task: ffff88007c774f50 ti: ffff88007c79c000 task.ti: ffff88007c79c000
 RIP: 0010:[&lt;ffffffff8143c459&gt;]  [&lt;ffffffff8143c459&gt;] ip6_route_output+0x58/0x82
 RSP: 0018:ffff88007fd03668  EFLAGS: 00010282
 RAX: 0000000000000000 RBX: ffffffff8186a000 RCX: 0000000000000040
 RDX: 0000000000000000 RSI: ffff88007b0e4a80 RDI: ffff88007fd03754
 RBP: ffff88007fd03688 R08: ffff88007b0e4a80 R09: 0000000000000000
 R10: 0200000a0100000a R11: 0001002200000000 R12: ffff88007fd03740
 R13: ffff88007b0e4a80 R14: ffff88007b0e4a80 R15: ffff88007bba0c50
 FS:  0000000000000000(0000) GS:ffff88007fd00000(0000) knlGS:0000000000000000
 CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
 CR2: 0000000000000046 CR3: 000000007bb60000 CR4: 00000000000006e0
 Stack:
  0000000000000000 ffff88007fd037a0 ffffffff8186a000 ffff88007fd03740
  ffff88007fd036c8 ffffffff814320bb 0000000000006e49 ffff88007b8b7360
  ffff88007bdbf200 ffff88007bcbc000 ffff88007b8b7000 ffff88007b8b7360
 Call Trace:
  &lt;IRQ&gt;
  [&lt;ffffffff814320bb&gt;] ip6_dst_lookup_tail+0x2d/0xa4
  [&lt;ffffffff814322a5&gt;] ip6_dst_lookup+0x10/0x12
  [&lt;ffffffff81323b4e&gt;] vxlan_xmit_one+0x32a/0x68c
  [&lt;ffffffff814a325a&gt;] ? _raw_spin_unlock_irqrestore+0x12/0x14
  [&lt;ffffffff8104c551&gt;] ? lock_timer_base.isra.23+0x26/0x4b
  [&lt;ffffffff8132451a&gt;] vxlan_xmit+0x66a/0x6a8
  [&lt;ffffffff8141a365&gt;] ? ipt_do_table+0x35f/0x37e
  [&lt;ffffffff81204ba2&gt;] ? selinux_ip_postroute+0x41/0x26e
  [&lt;ffffffff8139d0c1&gt;] dev_hard_start_xmit+0x2ce/0x3ce
  [&lt;ffffffff8139d491&gt;] __dev_queue_xmit+0x2d0/0x392
  [&lt;ffffffff813b380f&gt;] ? eth_header+0x28/0xb5
  [&lt;ffffffff8139d569&gt;] dev_queue_xmit+0xb/0xd
  [&lt;ffffffff813a5aa6&gt;] neigh_resolve_output+0x134/0x152
  [&lt;ffffffff813db741&gt;] ip_finish_output2+0x236/0x299
  [&lt;ffffffff813dc074&gt;] ip_finish_output+0x98/0x9d
  [&lt;ffffffff813dc749&gt;] ip_output+0x62/0x67
  [&lt;ffffffff813da9f2&gt;] dst_output+0xf/0x11
  [&lt;ffffffff813dc11c&gt;] ip_local_out+0x1b/0x1f
  [&lt;ffffffff813dcf1b&gt;] ip_send_skb+0x11/0x37
  [&lt;ffffffff813dcf70&gt;] ip_push_pending_frames+0x2f/0x33
  [&lt;ffffffff813ff732&gt;] icmp_push_reply+0x106/0x115
  [&lt;ffffffff813ff9e4&gt;] icmp_reply+0x142/0x164
  [&lt;ffffffff813ffb3b&gt;] icmp_echo.part.16+0x46/0x48
  [&lt;ffffffff813c1d30&gt;] ? nf_iterate+0x43/0x80
  [&lt;ffffffff813d8037&gt;] ? xfrm4_policy_check.constprop.11+0x52/0x52
  [&lt;ffffffff813ffb62&gt;] icmp_echo+0x25/0x27
  [&lt;ffffffff814005f7&gt;] icmp_rcv+0x1d2/0x20a
  [&lt;ffffffff813d8037&gt;] ? xfrm4_policy_check.constprop.11+0x52/0x52
  [&lt;ffffffff813d810d&gt;] ip_local_deliver_finish+0xd6/0x14f
  [&lt;ffffffff813d8037&gt;] ? xfrm4_policy_check.constprop.11+0x52/0x52
  [&lt;ffffffff813d7fde&gt;] NF_HOOK.constprop.10+0x4c/0x53
  [&lt;ffffffff813d82bf&gt;] ip_local_deliver+0x4a/0x4f
  [&lt;ffffffff813d7f7b&gt;] ip_rcv_finish+0x253/0x26a
  [&lt;ffffffff813d7d28&gt;] ? inet_add_protocol+0x3e/0x3e
  [&lt;ffffffff813d7fde&gt;] NF_HOOK.constprop.10+0x4c/0x53
  [&lt;ffffffff813d856a&gt;] ip_rcv+0x2a6/0x2ec
  [&lt;ffffffff8139a9a0&gt;] __netif_receive_skb_core+0x43e/0x478
  [&lt;ffffffff812a346f&gt;] ? virtqueue_poll+0x16/0x27
  [&lt;ffffffff8139aa2f&gt;] __netif_receive_skb+0x55/0x5a
  [&lt;ffffffff8139aaaa&gt;] process_backlog+0x76/0x12f
  [&lt;ffffffff8139add8&gt;] net_rx_action+0xa2/0x1ab
  [&lt;ffffffff81047847&gt;] __do_softirq+0xca/0x1d1
  [&lt;ffffffff81047ace&gt;] irq_exit+0x3e/0x85
  [&lt;ffffffff8100b98b&gt;] do_IRQ+0xa9/0xc4
  [&lt;ffffffff814a37ad&gt;] common_interrupt+0x6d/0x6d
  &lt;EOI&gt;
  [&lt;ffffffff810378db&gt;] ? native_safe_halt+0x6/0x8
  [&lt;ffffffff810110c7&gt;] default_idle+0x9/0xd
  [&lt;ffffffff81011694&gt;] arch_cpu_idle+0x13/0x1c
  [&lt;ffffffff8107480d&gt;] cpu_startup_entry+0xbc/0x137
  [&lt;ffffffff8102e741&gt;] start_secondary+0x1a0/0x1a5
 Code: 24 14 e8 f1 e5 01 00 31 d2 a8 32 0f 95 c2 49 8b 44 24 2c 49 0b 44 24 24 74 05 83 ca 04 eb 1c 4d 85 ed 74 17 49 8b 85 a8 02 00 00 &lt;66&gt; 8b 40 46 66 c1 e8 07 83 e0 07 c1 e0 03 09 c2 4c 89 e6 48 89
 RIP  [&lt;ffffffff8143c459&gt;] ip6_route_output+0x58/0x82
  RSP &lt;ffff88007fd03668&gt;
 CR2: 0000000000000046
 ---[ end trace 4612329caab37efd ]---

When vxlan interface is created without explicit group definition, the
default_dst protocol family is initialiazed to AF_UNSPEC and the driver
assumes IPv4 configuration. On the other side, the default_dst protocol
family is used to differentiate between IPv4 and IPv6 cases and, since,
AF_UNSPEC != AF_INET, the processing takes the IPv6 path.

Making the IPv4 assumption explicit by settting default_dst protocol
family to AF_INET4 and preventing mixing of IPv4 and IPv6 addresses in
snooped fdb entries fixes the corner case crashes.

Signed-off-by: Mike Rapoport &lt;mike.rapoport@ravellosystems.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Call efx_set_channels() before efx-&gt;type-&gt;dimension_resources()</title>
<updated>2014-04-14T13:47:21+00:00</updated>
<author>
<name>Daniel Pieczko</name>
<email>dpieczko@solarflare.com</email>
</author>
<published>2014-04-01T12:10:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=15c3d765f97e2d563182184f6446ba6afbeadfbf'/>
<id>15c3d765f97e2d563182184f6446ba6afbeadfbf</id>
<content type='text'>
[ Upstream commit 52ad762b85ed7947ec9eff6b036eb985352f6874 ]

When using the "separate_tx_channels=1" module parameter, the TX queues are
initially numbered starting from the first TX-only channel number (after all the
RX-only channels).  efx_set_channels() renumbers the queues so that they are
indexed from zero.

On EF10, the TX queues need to be relabelled in this way before calling the
dimension_resources NIC type operation, otherwise the TX queue PIO buffers can be
linked to the wrong VIs when using "separate_tx_channels=1".

Added comments to explain UC/WC mappings for PIO buffers

Signed-off-by: Shradha Shah &lt;sshah@solarflare.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 52ad762b85ed7947ec9eff6b036eb985352f6874 ]

When using the "separate_tx_channels=1" module parameter, the TX queues are
initially numbered starting from the first TX-only channel number (after all the
RX-only channels).  efx_set_channels() renumbers the queues so that they are
indexed from zero.

On EF10, the TX queues need to be relabelled in this way before calling the
dimension_resources NIC type operation, otherwise the TX queue PIO buffers can be
linked to the wrong VIs when using "separate_tx_channels=1".

Added comments to explain UC/WC mappings for PIO buffers

Signed-off-by: Shradha Shah &lt;sshah@solarflare.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>xen-netback: disable rogue vif in kthread context</title>
<updated>2014-04-14T13:47:21+00:00</updated>
<author>
<name>Wei Liu</name>
<email>wei.liu2@citrix.com</email>
</author>
<published>2014-04-01T11:46:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=0e4a1bc23a2243f3f6700b777b6f4dac52090437'/>
<id>0e4a1bc23a2243f3f6700b777b6f4dac52090437</id>
<content type='text'>
[ Upstream commit e9d8b2c2968499c1f96563e6522c56958d5a1d0d ]

When netback discovers frontend is sending malformed packet it will
disables the interface which serves that frontend.

However disabling a network interface involving taking a mutex which
cannot be done in softirq context, so we need to defer this process to
kthread context.

This patch does the following:
1. introduce a flag to indicate the interface is disabled.
2. check that flag in TX path, don't do any work if it's true.
3. check that flag in RX path, turn off that interface if it's true.

The reason to disable it in RX path is because RX uses kthread. After
this change the behavior of netback is still consistent -- it won't do
any TX work for a rogue frontend, and the interface will be eventually
turned off.

Also change a "continue" to "break" after xenvif_fatal_tx_err, as it
doesn't make sense to continue processing packets if frontend is rogue.

This is a fix for XSA-90.

Reported-by: Török Edwin &lt;edwin@etorok.net&gt;
Signed-off-by: Wei Liu &lt;wei.liu2@citrix.com&gt;
Cc: Ian Campbell &lt;ian.campbell@citrix.com&gt;
Reviewed-by: David Vrabel &lt;david.vrabel@citrix.com&gt;
Acked-by: Ian Campbell &lt;ian.campbell@citrix.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit e9d8b2c2968499c1f96563e6522c56958d5a1d0d ]

When netback discovers frontend is sending malformed packet it will
disables the interface which serves that frontend.

However disabling a network interface involving taking a mutex which
cannot be done in softirq context, so we need to defer this process to
kthread context.

This patch does the following:
1. introduce a flag to indicate the interface is disabled.
2. check that flag in TX path, don't do any work if it's true.
3. check that flag in RX path, turn off that interface if it's true.

The reason to disable it in RX path is because RX uses kthread. After
this change the behavior of netback is still consistent -- it won't do
any TX work for a rogue frontend, and the interface will be eventually
turned off.

Also change a "continue" to "break" after xenvif_fatal_tx_err, as it
doesn't make sense to continue processing packets if frontend is rogue.

This is a fix for XSA-90.

Reported-by: Török Edwin &lt;edwin@etorok.net&gt;
Signed-off-by: Wei Liu &lt;wei.liu2@citrix.com&gt;
Cc: Ian Campbell &lt;ian.campbell@citrix.com&gt;
Reviewed-by: David Vrabel &lt;david.vrabel@citrix.com&gt;
Acked-by: Ian Campbell &lt;ian.campbell@citrix.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>xen-netback: remove pointless clause from if statement</title>
<updated>2014-04-14T13:47:21+00:00</updated>
<author>
<name>Paul Durrant</name>
<email>Paul.Durrant@citrix.com</email>
</author>
<published>2014-03-28T11:39:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=cadf431bb527964be519675e560fd61db498fe98'/>
<id>cadf431bb527964be519675e560fd61db498fe98</id>
<content type='text'>
[ Upstream commit 0576eddf24df716d8570ef8ca11452a9f98eaab2 ]

This patch removes a test in start_new_rx_buffer() that checks whether
a copy operation is less than MAX_BUFFER_OFFSET in length, since
MAX_BUFFER_OFFSET is defined to be PAGE_SIZE and the only caller of
start_new_rx_buffer() already limits copy operations to PAGE_SIZE or less.

Signed-off-by: Paul Durrant &lt;paul.durrant@citrix.com&gt;
Cc: Ian Campbell &lt;ian.campbell@citrix.com&gt;
Cc: Wei Liu &lt;wei.liu2@citrix.com&gt;
Cc: Sander Eikelenboom &lt;linux@eikelenboom.it&gt;
Reported-By: Sander Eikelenboom &lt;linux@eikelenboom.it&gt;
Tested-By: Sander Eikelenboom &lt;linux@eikelenboom.it&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 0576eddf24df716d8570ef8ca11452a9f98eaab2 ]

This patch removes a test in start_new_rx_buffer() that checks whether
a copy operation is less than MAX_BUFFER_OFFSET in length, since
MAX_BUFFER_OFFSET is defined to be PAGE_SIZE and the only caller of
start_new_rx_buffer() already limits copy operations to PAGE_SIZE or less.

Signed-off-by: Paul Durrant &lt;paul.durrant@citrix.com&gt;
Cc: Ian Campbell &lt;ian.campbell@citrix.com&gt;
Cc: Wei Liu &lt;wei.liu2@citrix.com&gt;
Cc: Sander Eikelenboom &lt;linux@eikelenboom.it&gt;
Reported-By: Sander Eikelenboom &lt;linux@eikelenboom.it&gt;
Tested-By: Sander Eikelenboom &lt;linux@eikelenboom.it&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usbnet: include wait queue head in device structure</title>
<updated>2014-04-14T13:47:21+00:00</updated>
<author>
<name>Oliver Neukum</name>
<email>oneukum@suse.de</email>
</author>
<published>2014-03-26T13:32:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=72e46f6e69c9ae676c5e0652be0a5d38de568ab5'/>
<id>72e46f6e69c9ae676c5e0652be0a5d38de568ab5</id>
<content type='text'>
[ Upstream commit 14a0d635d18d0fb552dcc979d6d25106e6541f2e ]

This fixes a race which happens by freeing an object on the stack.
Quoting Julius:
&gt; The issue is
&gt; that it calls usbnet_terminate_urbs() before that, which temporarily
&gt; installs a waitqueue in dev-&gt;wait in order to be able to wait on the
&gt; tasklet to run and finish up some queues. The waiting itself looks
&gt; okay, but the access to 'dev-&gt;wait' is totally unprotected and can
&gt; race arbitrarily. I think in this case usbnet_bh() managed to succeed
&gt; it's dev-&gt;wait check just before usbnet_terminate_urbs() sets it back
&gt; to NULL. The latter then finishes and the waitqueue_t structure on its
&gt; stack gets overwritten by other functions halfway through the
&gt; wake_up() call in usbnet_bh().

The fix is to just not allocate the data structure on the stack.
As dev-&gt;wait is abused as a flag it also takes a runtime PM change
to fix this bug.

Signed-off-by: Oliver Neukum &lt;oneukum@suse.de&gt;
Reported-by: Grant Grundler &lt;grundler@google.com&gt;
Tested-by: Grant Grundler &lt;grundler@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 14a0d635d18d0fb552dcc979d6d25106e6541f2e ]

This fixes a race which happens by freeing an object on the stack.
Quoting Julius:
&gt; The issue is
&gt; that it calls usbnet_terminate_urbs() before that, which temporarily
&gt; installs a waitqueue in dev-&gt;wait in order to be able to wait on the
&gt; tasklet to run and finish up some queues. The waiting itself looks
&gt; okay, but the access to 'dev-&gt;wait' is totally unprotected and can
&gt; race arbitrarily. I think in this case usbnet_bh() managed to succeed
&gt; it's dev-&gt;wait check just before usbnet_terminate_urbs() sets it back
&gt; to NULL. The latter then finishes and the waitqueue_t structure on its
&gt; stack gets overwritten by other functions halfway through the
&gt; wake_up() call in usbnet_bh().

The fix is to just not allocate the data structure on the stack.
As dev-&gt;wait is abused as a flag it also takes a runtime PM change
to fix this bug.

Signed-off-by: Oliver Neukum &lt;oneukum@suse.de&gt;
Reported-by: Grant Grundler &lt;grundler@google.com&gt;
Tested-by: Grant Grundler &lt;grundler@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>virtio-net: correct error handling of virtqueue_kick()</title>
<updated>2014-04-14T13:47:21+00:00</updated>
<author>
<name>Jason Wang</name>
<email>jasowang@redhat.com</email>
</author>
<published>2014-03-26T05:03:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=1cc4545b64bb70290712e12c4e306867ea3357c9'/>
<id>1cc4545b64bb70290712e12c4e306867ea3357c9</id>
<content type='text'>
[ Upstream commit 681daee2443291419c57cccb0671f5f94a839005 ]

Current error handling of virtqueue_kick() was wrong in two places:
- The skb were freed immediately when virtqueue_kick() fail during
  xmit. This may lead double free since the skb was not detached from
  the virtqueue.
- try_fill_recv() returns false when virtqueue_kick() fail. This will
  lead unnecessary rescheduling of refill work.

Actually, it's safe to just ignore the kick failure in those two
places. So this patch fixes this by partially revert commit
67975901183799af8e93ec60e322f9e2a1940b9b.

Fixes 67975901183799af8e93ec60e322f9e2a1940b9b
(virtio_net: verify if virtqueue_kick() succeeded).

Cc: Heinz Graalfs &lt;graalfs@linux.vnet.ibm.com&gt;
Cc: Rusty Russell &lt;rusty@rustcorp.com.au&gt;
Cc: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Signed-off-by: Jason Wang &lt;jasowang@redhat.com&gt;
Acked-by: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 681daee2443291419c57cccb0671f5f94a839005 ]

Current error handling of virtqueue_kick() was wrong in two places:
- The skb were freed immediately when virtqueue_kick() fail during
  xmit. This may lead double free since the skb was not detached from
  the virtqueue.
- try_fill_recv() returns false when virtqueue_kick() fail. This will
  lead unnecessary rescheduling of refill work.

Actually, it's safe to just ignore the kick failure in those two
places. So this patch fixes this by partially revert commit
67975901183799af8e93ec60e322f9e2a1940b9b.

Fixes 67975901183799af8e93ec60e322f9e2a1940b9b
(virtio_net: verify if virtqueue_kick() succeeded).

Cc: Heinz Graalfs &lt;graalfs@linux.vnet.ibm.com&gt;
Cc: Rusty Russell &lt;rusty@rustcorp.com.au&gt;
Cc: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Signed-off-by: Jason Wang &lt;jasowang@redhat.com&gt;
Acked-by: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tg3: Do not include vlan acceleration features in vlan_features</title>
<updated>2014-04-14T13:47:21+00:00</updated>
<author>
<name>Vlad Yasevich</name>
<email>vyasevic@redhat.com</email>
</author>
<published>2014-03-24T21:52:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=5ff906bf6e0a6e404aec88f27101904159d24508'/>
<id>5ff906bf6e0a6e404aec88f27101904159d24508</id>
<content type='text'>
[ Upstream commit 51dfe7b944998eaeb2b34d314f3a6b16a5fd621b ]

Including hardware acceleration features in vlan_features breaks
stacked vlans (Q-in-Q) by marking the bottom vlan interface as
capable of acceleration.  This causes one of the tags to be lost
and the packets are sent with a sing vlan header.

CC: Nithin Nayak Sujir &lt;nsujir@broadcom.com&gt;
CC: Michael Chan &lt;mchan@broadcom.com&gt;
Signed-off-by: Vlad Yasevich &lt;vyasevic@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 51dfe7b944998eaeb2b34d314f3a6b16a5fd621b ]

Including hardware acceleration features in vlan_features breaks
stacked vlans (Q-in-Q) by marking the bottom vlan interface as
capable of acceleration.  This causes one of the tags to be lost
and the packets are sent with a sing vlan header.

CC: Nithin Nayak Sujir &lt;nsujir@broadcom.com&gt;
CC: Michael Chan &lt;mchan@broadcom.com&gt;
Signed-off-by: Vlad Yasevich &lt;vyasevic@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: micrel : ks8851-ml: add vdd-supply support</title>
<updated>2014-04-14T13:47:20+00:00</updated>
<author>
<name>Nishanth Menon</name>
<email>nm@ti.com</email>
</author>
<published>2014-03-21T06:52:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=5bd0d8ba2538d16961e31c92d62cabaa1d3c9b58'/>
<id>5bd0d8ba2538d16961e31c92d62cabaa1d3c9b58</id>
<content type='text'>
[ Upstream commit ebf4ad955d3e26d4d2a33709624fc7b5b9d3b969 ]

Few platforms use external regulator to keep the ethernet MAC supplied.
So, request and enable the regulator for driver functionality.

Fixes: 66fda75f47dc (regulator: core: Replace direct ops-&gt;disable usage)
Reported-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Suggested-by: Markus Pargmann &lt;mpa@pengutronix.de&gt;
Signed-off-by: Nishanth Menon &lt;nm@ti.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit ebf4ad955d3e26d4d2a33709624fc7b5b9d3b969 ]

Few platforms use external regulator to keep the ethernet MAC supplied.
So, request and enable the regulator for driver functionality.

Fixes: 66fda75f47dc (regulator: core: Replace direct ops-&gt;disable usage)
Reported-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Suggested-by: Markus Pargmann &lt;mpa@pengutronix.de&gt;
Signed-off-by: Nishanth Menon &lt;nm@ti.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vxlan: fix nonfunctional neigh_reduce()</title>
<updated>2014-04-14T13:47:20+00:00</updated>
<author>
<name>David Stevens</name>
<email>dlstevens@us.ibm.com</email>
</author>
<published>2014-03-24T14:39:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=3927dace523706cc00f808520eaf2125dd7c07b5'/>
<id>3927dace523706cc00f808520eaf2125dd7c07b5</id>
<content type='text'>
[ Upstream commit 4b29dba9c085a4fb79058fb1c45a2f6257ca3dfa ]

The VXLAN neigh_reduce() code is completely non-functional since
check-in. Specific errors:

1) The original code drops all packets with a multicast destination address,
	even though neighbor solicitations are sent to the solicited-node
	address, a multicast address. The code after this check was never run.
2) The neighbor table lookup used the IPv6 header destination, which is the
	solicited node address, rather than the target address from the
	neighbor solicitation. So neighbor lookups would always fail if it
	got this far. Also for L3MISSes.
3) The code calls ndisc_send_na(), which does a send on the tunnel device.
	The context for neigh_reduce() is the transmit path, vxlan_xmit(),
	where the host or a bridge-attached neighbor is trying to transmit
	a neighbor solicitation. To respond to it, the tunnel endpoint needs
	to do a *receive* of the appropriate neighbor advertisement. Doing a
	send, would only try to send the advertisement, encapsulated, to the
	remote destinations in the fdb -- hosts that definitely did not do the
	corresponding solicitation.
4) The code uses the tunnel endpoint IPv6 forwarding flag to determine the
	isrouter flag in the advertisement. This has nothing to do with whether
	or not the target is a router, and generally won't be set since the
	tunnel endpoint is bridging, not routing, traffic.

	The patch below creates a proxy neighbor advertisement to respond to
neighbor solicitions as intended, providing proper IPv6 support for neighbor
reduction.

Signed-off-by: David L Stevens &lt;dlstevens@us.ibm.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 4b29dba9c085a4fb79058fb1c45a2f6257ca3dfa ]

The VXLAN neigh_reduce() code is completely non-functional since
check-in. Specific errors:

1) The original code drops all packets with a multicast destination address,
	even though neighbor solicitations are sent to the solicited-node
	address, a multicast address. The code after this check was never run.
2) The neighbor table lookup used the IPv6 header destination, which is the
	solicited node address, rather than the target address from the
	neighbor solicitation. So neighbor lookups would always fail if it
	got this far. Also for L3MISSes.
3) The code calls ndisc_send_na(), which does a send on the tunnel device.
	The context for neigh_reduce() is the transmit path, vxlan_xmit(),
	where the host or a bridge-attached neighbor is trying to transmit
	a neighbor solicitation. To respond to it, the tunnel endpoint needs
	to do a *receive* of the appropriate neighbor advertisement. Doing a
	send, would only try to send the advertisement, encapsulated, to the
	remote destinations in the fdb -- hosts that definitely did not do the
	corresponding solicitation.
4) The code uses the tunnel endpoint IPv6 forwarding flag to determine the
	isrouter flag in the advertisement. This has nothing to do with whether
	or not the target is a router, and generally won't be set since the
	tunnel endpoint is bridging, not routing, traffic.

	The patch below creates a proxy neighbor advertisement to respond to
neighbor solicitions as intended, providing proper IPv6 support for neighbor
reduction.

Signed-off-by: David L Stevens &lt;dlstevens@us.ibm.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vxlan: fix potential NULL dereference in arp_reduce()</title>
<updated>2014-04-14T13:47:20+00:00</updated>
<author>
<name>David Stevens</name>
<email>dlstevens@us.ibm.com</email>
</author>
<published>2014-03-18T16:32:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=e1ef50212d122b0e775fb234b4c1523d52859acb'/>
<id>e1ef50212d122b0e775fb234b4c1523d52859acb</id>
<content type='text'>
[ Upstream commit 7346135dcd3f9b57f30a5512094848c678d7143e ]

This patch fixes a NULL pointer dereference in the event of an
skb allocation failure in arp_reduce().

Signed-Off-By: David L Stevens &lt;dlstevens@us.ibm.com&gt;
Acked-by: Cong Wang &lt;cwang@twopensource.com&gt;

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 7346135dcd3f9b57f30a5512094848c678d7143e ]

This patch fixes a NULL pointer dereference in the event of an
skb allocation failure in arp_reduce().

Signed-Off-By: David L Stevens &lt;dlstevens@us.ibm.com&gt;
Acked-by: Cong Wang &lt;cwang@twopensource.com&gt;

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
