<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/drivers/net/vxlan.c, branch v3.15.2</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=v3.15.2</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=v3.15.2'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2014-06-26T19:17:34+00:00</updated>
<entry>
<title>vxlan: use dev-&gt;needed_headroom instead of dev-&gt;hard_header_len</title>
<updated>2014-06-26T19:17:34+00:00</updated>
<author>
<name>Cong Wang</name>
<email>cwang@twopensource.com</email>
</author>
<published>2014-06-12T18:53:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=8293924ce22442fa0d7ef470328e5fbc83a61687'/>
<id>urn:sha1:8293924ce22442fa0d7ef470328e5fbc83a61687</id>
<content type='text'>
[ Upstream commit 2853af6a2ea1a8ed09b09dd4fb578e7f435e8d34 ]

When we mirror packets from a vxlan tunnel to other device,
the mirror device should see the same packets (that is, without
outer header). Because vxlan tunnel sets dev-&gt;hard_header_len,
tcf_mirred() resets mac header back to outer mac, the mirror device
actually sees packets with outer headers

Vxlan tunnel should set dev-&gt;needed_headroom instead of
dev-&gt;hard_header_len, like what other ip tunnels do. This fixes
the above problem.

Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Cc: stephen hemminger &lt;stephen@networkplumber.org&gt;
Cc: Pravin B Shelar &lt;pshelar@nicira.com&gt;
Signed-off-by: Cong Wang &lt;cwang@twopensource.com&gt;
Signed-off-by: Cong Wang &lt;xiyou.wangcong@gmail.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>
</entry>
<entry>
<title>vxlan: ensure to advertise the right fdb remote</title>
<updated>2014-04-23T19:01:09+00:00</updated>
<author>
<name>Nicolas Dichtel</name>
<email>nicolas.dichtel@6wind.com</email>
</author>
<published>2014-04-22T13:01:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=9e4b93f905bc0ca1363a07b0f039455d9117d6bc'/>
<id>urn:sha1:9e4b93f905bc0ca1363a07b0f039455d9117d6bc</id>
<content type='text'>
The goal of this patch is to fix rtnelink notification. The main problem was
about notification for fdb entry with more than one remote. Before the patch,
when a remote was added to an existing fdb entry, the kernel advertised the
first remote instead of the added one. Also when a remote was removed from a fdb
entry with several remotes, the deleted remote was not advertised.

Signed-off-by: Nicolas Dichtel &lt;nicolas.dichtel@6wind.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>ipv4: add a sock pointer to dst-&gt;output() path.</title>
<updated>2014-04-15T17:47:15+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2014-04-15T17:47:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=aad88724c9d54acb1a9737cb6069d8470fa85f74'/>
<id>urn:sha1:aad88724c9d54acb1a9737cb6069d8470fa85f74</id>
<content type='text'>
In the dst-&gt;output() path for ipv4, the code assumes the skb it has to
transmit is attached to an inet socket, specifically via
ip_mc_output() : The sk_mc_loop() test triggers a WARN_ON() when the
provider of the packet is an AF_PACKET socket.

The dst-&gt;output() method gets an additional 'struct sock *sk'
parameter. This needs a cascade of changes so that this parameter can
be propagated from vxlan to final consumer.

Fixes: 8f646c922d55 ("vxlan: keep original skb ownership")
Reported-by: lucien xin &lt;lucien.xin@gmail.com&gt;
Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: vxlan: fix crash when interface is created with no group</title>
<updated>2014-04-03T15:16:47+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.radix-linux.su/kernel/linux.git/commit/?id=5933a7bbb5de66482ea8aa874a7ebaf8e67603c4'/>
<id>urn:sha1:5933a7bbb5de66482ea8aa874a7ebaf8e67603c4</id>
<content type='text'>
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;
</content>
</entry>
<entry>
<title>Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net</title>
<updated>2014-03-26T00:29:20+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2014-03-26T00:29:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=04f58c88542b6b351efb4eea01134eb672e22e6e'/>
<id>urn:sha1:04f58c88542b6b351efb4eea01134eb672e22e6e</id>
<content type='text'>
Conflicts:
	Documentation/devicetree/bindings/net/micrel-ks8851.txt
	net/core/netpoll.c

The net/core/netpoll.c conflict is a bug fix in 'net' happening
to code which is completely removed in 'net-next'.

In micrel-ks8851.txt we simply have overlapping changes.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>vxlan: fix nonfunctional neigh_reduce()</title>
<updated>2014-03-24T19:35:10+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.radix-linux.su/kernel/linux.git/commit/?id=4b29dba9c085a4fb79058fb1c45a2f6257ca3dfa'/>
<id>urn:sha1:4b29dba9c085a4fb79058fb1c45a2f6257ca3dfa</id>
<content type='text'>
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;
</content>
</entry>
<entry>
<title>vxlan: fix potential NULL dereference in arp_reduce()</title>
<updated>2014-03-18T20:09:34+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.radix-linux.su/kernel/linux.git/commit/?id=7346135dcd3f9b57f30a5512094848c678d7143e'/>
<id>urn:sha1:7346135dcd3f9b57f30a5512094848c678d7143e</id>
<content type='text'>
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;
</content>
</entry>
<entry>
<title>vxlan: remove unused port variable in vxlan_udp_encap_recv()</title>
<updated>2014-02-26T20:46:25+00:00</updated>
<author>
<name>Pablo Neira Ayuso</name>
<email>pablo@gnumonks.org</email>
</author>
<published>2014-02-25T16:46:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=86c3f0f8307ac18f3ad3109e1969c62b8fbed5df'/>
<id>urn:sha1:86c3f0f8307ac18f3ad3109e1969c62b8fbed5df</id>
<content type='text'>
Signed-off-by: Pablo Neira Ayuso &lt;pablo@gnumonks.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: introduce netdev_alloc_pcpu_stats() for drivers</title>
<updated>2014-02-14T20:49:55+00:00</updated>
<author>
<name>WANG Cong</name>
<email>xiyou.wangcong@gmail.com</email>
</author>
<published>2014-02-13T19:46:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=1c213bd24ad04f4430031d20d740d7783162b099'/>
<id>urn:sha1:1c213bd24ad04f4430031d20d740d7783162b099</id>
<content type='text'>
There are many drivers calling alloc_percpu() to allocate pcpu stats
and then initializing -&gt;syncp. So just introduce a helper function for them.

Cc: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Cong Wang &lt;xiyou.wangcong@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>vxlan: remove extra newline after function definition</title>
<updated>2014-02-02T00:58:02+00:00</updated>
<author>
<name>Daniel Baluta</name>
<email>dbaluta@ixiacom.com</email>
</author>
<published>2014-01-31T07:50:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=4fe46b9a4d0b5eef96867e6d5134159e5a65d2a5'/>
<id>urn:sha1:4fe46b9a4d0b5eef96867e6d5134159e5a65d2a5</id>
<content type='text'>
Signed-off-by: Daniel Baluta &lt;dbaluta@ixiacom.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
