<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/net/l2tp, branch v3.13</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/net/l2tp?h=v3.13</id>
<link rel='self' href='https://git.amat.us/linux/atom/net/l2tp?h=v3.13'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2013-12-11T03:51:00Z</updated>
<entry>
<title>ipv6: do not erase dst address with flow label destination</title>
<updated>2013-12-11T03:51:00Z</updated>
<author>
<name>Florent Fourcot</name>
<email>florent.fourcot@enst-bretagne.fr</email>
</author>
<published>2013-12-10T14:15:46Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ce7a3bdf18a8dbcba1409f5d335c56fde432ca89'/>
<id>urn:sha1:ce7a3bdf18a8dbcba1409f5d335c56fde432ca89</id>
<content type='text'>
This patch is following b579035ff766c9412e2b92abf5cab794bff102b6
	"ipv6: remove old conditions on flow label sharing"

Since there is no reason to restrict a label to a
destination, we should not erase the destination value of a
socket with the value contained in the flow label storage.

This patch allows to really have the same flow label to more
than one destination.

Signed-off-by: Florent Fourcot &lt;florent.fourcot@enst-bretagne.fr&gt;
Reviewed-by: Hannes Frederic Sowa &lt;hannes@stressinduktion.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>inet: fix addr_len/msg-&gt;msg_namelen assignment in recv_error and rxpmtu functions</title>
<updated>2013-11-23T22:46:23Z</updated>
<author>
<name>Hannes Frederic Sowa</name>
<email>hannes@stressinduktion.org</email>
</author>
<published>2013-11-22T23:46:12Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=85fbaa75037d0b6b786ff18658ddf0b4014ce2a4'/>
<id>urn:sha1:85fbaa75037d0b6b786ff18658ddf0b4014ce2a4</id>
<content type='text'>
Commit bceaa90240b6019ed73b49965eac7d167610be69 ("inet: prevent leakage
of uninitialized memory to user in recv syscalls") conditionally updated
addr_len if the msg_name is written to. The recv_error and rxpmtu
functions relied on the recvmsg functions to set up addr_len before.

As this does not happen any more we have to pass addr_len to those
functions as well and set it to the size of the corresponding sockaddr
length.

This broke traceroute and such.

Fixes: bceaa90240b6 ("inet: prevent leakage of uninitialized memory to user in recv syscalls")
Reported-by: Brad Spengler &lt;spender@grsecurity.net&gt;
Reported-by: Tom Labanowski
Cc: mpb &lt;mpb.mail@gmail.com&gt;
Cc: David S. Miller &lt;davem@davemloft.net&gt;
Cc: Eric Dumazet &lt;eric.dumazet@gmail.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>
</entry>
<entry>
<title>net: rework recvmsg handler msg_name and msg_namelen logic</title>
<updated>2013-11-21T02:52:30Z</updated>
<author>
<name>Hannes Frederic Sowa</name>
<email>hannes@stressinduktion.org</email>
</author>
<published>2013-11-21T02:14:22Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f3d3342602f8bcbf37d7c46641cb9bca7618eb1c'/>
<id>urn:sha1:f3d3342602f8bcbf37d7c46641cb9bca7618eb1c</id>
<content type='text'>
This patch now always passes msg-&gt;msg_namelen as 0. recvmsg handlers must
set msg_namelen to the proper size &lt;= sizeof(struct sockaddr_storage)
to return msg_name to the user.

This prevents numerous uninitialized memory leaks we had in the
recvmsg handlers and makes it harder for new code to accidentally leak
uninitialized memory.

Optimize for the case recvfrom is called with NULL as address. We don't
need to copy the address at all, so set it to NULL before invoking the
recvmsg handler. We can do so, because all the recvmsg handlers must
cope with the case a plain read() is called on them. read() also sets
msg_name to NULL.

Also document these changes in include/linux/net.h as suggested by David
Miller.

Changes since RFC:

Set msg-&gt;msg_name = NULL if user specified a NULL in msg_name but had a
non-null msg_namelen in verify_iovec/verify_compat_iovec. This doesn't
affect sendto as it would bail out earlier while trying to copy-in the
address. It also more naturally reflects the logic by the callers of
verify_iovec.

With this change in place I could remove "
if (!uaddr || msg_sys-&gt;msg_namelen == 0)
	msg-&gt;msg_name = NULL
".

This change does not alter the user visible error logic as we ignore
msg_namelen as long as msg_name is NULL.

Also remove two unnecessary curly brackets in ___sys_recvmsg and change
comments to netdev style.

Cc: David Miller &lt;davem@davemloft.net&gt;
Suggested-by: Eric Dumazet &lt;eric.dumazet@gmail.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>
</entry>
<entry>
<title>genetlink: only pass array to genl_register_family_with_ops()</title>
<updated>2013-11-19T21:39:05Z</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2013-11-19T14:19:31Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c53ed7423619b4e8108914a9f31b426dd58ad591'/>
<id>urn:sha1:c53ed7423619b4e8108914a9f31b426dd58ad591</id>
<content type='text'>
As suggested by David Miller, make genl_register_family_with_ops()
a macro and pass only the array, evaluating ARRAY_SIZE() in the
macro, this is a little safer.

The openvswitch has some indirection, assing ops/n_ops directly in
that code. This might ultimately just assign the pointers in the
family initializations, saving the struct genl_family_and_ops and
code (once mcast groups are handled differently.)

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>inet: prevent leakage of uninitialized memory to user in recv syscalls</title>
<updated>2013-11-18T20:12:03Z</updated>
<author>
<name>Hannes Frederic Sowa</name>
<email>hannes@stressinduktion.org</email>
</author>
<published>2013-11-18T03:20:45Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=bceaa90240b6019ed73b49965eac7d167610be69'/>
<id>urn:sha1:bceaa90240b6019ed73b49965eac7d167610be69</id>
<content type='text'>
Only update *addr_len when we actually fill in sockaddr, otherwise we
can return uninitialized memory from the stack to the caller in the
recvfrom, recvmmsg and recvmsg syscalls. Drop the the (addr_len == NULL)
checks because we only get called with a valid addr_len pointer either
from sock_common_recvmsg or inet_recvmsg.

If a blocking read waits on a socket which is concurrently shut down we
now return zero and set msg_msgnamelen to 0.

Reported-by: mpb &lt;mpb.mail@gmail.com&gt;
Suggested-by: Eric Dumazet &lt;eric.dumazet@gmail.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>
</entry>
<entry>
<title>genetlink: make all genl_ops users const</title>
<updated>2013-11-14T22:10:41Z</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2013-11-14T16:14:46Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=4534de8305b3f1460a527a0cda0e3dc2224c6f0c'/>
<id>urn:sha1:4534de8305b3f1460a527a0cda0e3dc2224c6f0c</id>
<content type='text'>
Now that genl_ops are no longer modified in place when
registering, they can be made const. This patch was done
mostly with spatch:

@@
identifier ops;
@@
+const
 struct genl_ops ops[] = {
 ...
 };

(except the struct thing in net/openvswitch/datapath.c)

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.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>2013-10-23T20:49:34Z</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2013-10-23T20:28:39Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c3fa32b9764dc45dcf8a2231b1c110abc4a63e0b'/>
<id>urn:sha1:c3fa32b9764dc45dcf8a2231b1c110abc4a63e0b</id>
<content type='text'>
Conflicts:
	drivers/net/usb/qmi_wwan.c
	include/net/dst.h

Trivial merge conflicts, both were overlapping changes.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: misc: Remove extern from function prototypes</title>
<updated>2013-10-19T23:12:11Z</updated>
<author>
<name>Joe Perches</name>
<email>joe@perches.com</email>
</author>
<published>2013-10-18T20:48:25Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c1b1203d65955c179fec617ff17a21273f33a414'/>
<id>urn:sha1:c1b1203d65955c179fec617ff17a21273f33a414</id>
<content type='text'>
There are a mix of function prototypes with and without extern
in the kernel sources.  Standardize on not using extern for
function prototypes.

Function prototypes don't need to be written with extern.
extern is assumed by the compiler.  Its use is as unnecessary as
using auto to declare automatic/local variables in a block.

Signed-off-by: Joe Perches &lt;joe@perches.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>l2tp: must disable bh before calling l2tp_xmit_skb()</title>
<updated>2013-10-11T20:51:37Z</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2013-10-10T13:30:09Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=455cc32bf128e114455d11ad919321ab89a2c312'/>
<id>urn:sha1:455cc32bf128e114455d11ad919321ab89a2c312</id>
<content type='text'>
François Cachereul made a very nice bug report and suspected
the bh_lock_sock() / bh_unlok_sock() pair used in l2tp_xmit_skb() from
process context was not good.

This problem was added by commit 6af88da14ee284aaad6e4326da09a89191ab6165
("l2tp: Fix locking in l2tp_core.c").

l2tp_eth_dev_xmit() runs from BH context, so we must disable BH
from other l2tp_xmit_skb() users.

[  452.060011] BUG: soft lockup - CPU#1 stuck for 23s! [accel-pppd:6662]
[  452.061757] Modules linked in: l2tp_ppp l2tp_netlink l2tp_core pppoe pppox
ppp_generic slhc ipv6 ext3 mbcache jbd virtio_balloon xfs exportfs dm_mod
virtio_blk ata_generic virtio_net floppy ata_piix libata virtio_pci virtio_ring virtio [last unloaded: scsi_wait_scan]
[  452.064012] CPU 1
[  452.080015] BUG: soft lockup - CPU#2 stuck for 23s! [accel-pppd:6643]
[  452.080015] CPU 2
[  452.080015]
[  452.080015] Pid: 6643, comm: accel-pppd Not tainted 3.2.46.mini #1 Bochs Bochs
[  452.080015] RIP: 0010:[&lt;ffffffff81059f6c&gt;]  [&lt;ffffffff81059f6c&gt;] do_raw_spin_lock+0x17/0x1f
[  452.080015] RSP: 0018:ffff88007125fc18  EFLAGS: 00000293
[  452.080015] RAX: 000000000000aba9 RBX: ffffffff811d0703 RCX: 0000000000000000
[  452.080015] RDX: 00000000000000ab RSI: ffff8800711f6896 RDI: ffff8800745c8110
[  452.080015] RBP: ffff88007125fc18 R08: 0000000000000020 R09: 0000000000000000
[  452.080015] R10: 0000000000000000 R11: 0000000000000280 R12: 0000000000000286
[  452.080015] R13: 0000000000000020 R14: 0000000000000240 R15: 0000000000000000
[  452.080015] FS:  00007fdc0cc24700(0000) GS:ffff8800b6f00000(0000) knlGS:0000000000000000
[  452.080015] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  452.080015] CR2: 00007fdb054899b8 CR3: 0000000074404000 CR4: 00000000000006a0
[  452.080015] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[  452.080015] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
[  452.080015] Process accel-pppd (pid: 6643, threadinfo ffff88007125e000, task ffff8800b27e6dd0)
[  452.080015] Stack:
[  452.080015]  ffff88007125fc28 ffffffff81256559 ffff88007125fc98 ffffffffa01b2bd1
[  452.080015]  ffff88007125fc58 000000000000000c 00000000029490d0 0000009c71dbe25e
[  452.080015]  000000000000005c 000000080000000e 0000000000000000 ffff880071170600
[  452.080015] Call Trace:
[  452.080015]  [&lt;ffffffff81256559&gt;] _raw_spin_lock+0xe/0x10
[  452.080015]  [&lt;ffffffffa01b2bd1&gt;] l2tp_xmit_skb+0x189/0x4ac [l2tp_core]
[  452.080015]  [&lt;ffffffffa01c2d36&gt;] pppol2tp_sendmsg+0x15e/0x19c [l2tp_ppp]
[  452.080015]  [&lt;ffffffff811c7872&gt;] __sock_sendmsg_nosec+0x22/0x24
[  452.080015]  [&lt;ffffffff811c83bd&gt;] sock_sendmsg+0xa1/0xb6
[  452.080015]  [&lt;ffffffff81254e88&gt;] ? __schedule+0x5c1/0x616
[  452.080015]  [&lt;ffffffff8103c7c6&gt;] ? __dequeue_signal+0xb7/0x10c
[  452.080015]  [&lt;ffffffff810bbd21&gt;] ? fget_light+0x75/0x89
[  452.080015]  [&lt;ffffffff811c8444&gt;] ? sockfd_lookup_light+0x20/0x56
[  452.080015]  [&lt;ffffffff811c9b34&gt;] sys_sendto+0x10c/0x13b
[  452.080015]  [&lt;ffffffff8125cac2&gt;] system_call_fastpath+0x16/0x1b
[  452.080015] Code: 81 48 89 e5 72 0c 31 c0 48 81 ff 45 66 25 81 0f 92 c0 5d c3 55 b8 00 01 00 00 48 89 e5 f0 66 0f c1 07 0f b6 d4 38 d0 74 06 f3 90 &lt;8a&gt; 07 eb f6 5d c3 90 90 55 48 89 e5 9c 58 0f 1f 44 00 00 5d c3
[  452.080015] Call Trace:
[  452.080015]  [&lt;ffffffff81256559&gt;] _raw_spin_lock+0xe/0x10
[  452.080015]  [&lt;ffffffffa01b2bd1&gt;] l2tp_xmit_skb+0x189/0x4ac [l2tp_core]
[  452.080015]  [&lt;ffffffffa01c2d36&gt;] pppol2tp_sendmsg+0x15e/0x19c [l2tp_ppp]
[  452.080015]  [&lt;ffffffff811c7872&gt;] __sock_sendmsg_nosec+0x22/0x24
[  452.080015]  [&lt;ffffffff811c83bd&gt;] sock_sendmsg+0xa1/0xb6
[  452.080015]  [&lt;ffffffff81254e88&gt;] ? __schedule+0x5c1/0x616
[  452.080015]  [&lt;ffffffff8103c7c6&gt;] ? __dequeue_signal+0xb7/0x10c
[  452.080015]  [&lt;ffffffff810bbd21&gt;] ? fget_light+0x75/0x89
[  452.080015]  [&lt;ffffffff811c8444&gt;] ? sockfd_lookup_light+0x20/0x56
[  452.080015]  [&lt;ffffffff811c9b34&gt;] sys_sendto+0x10c/0x13b
[  452.080015]  [&lt;ffffffff8125cac2&gt;] system_call_fastpath+0x16/0x1b
[  452.064012]
[  452.064012] Pid: 6662, comm: accel-pppd Not tainted 3.2.46.mini #1 Bochs Bochs
[  452.064012] RIP: 0010:[&lt;ffffffff81059f6e&gt;]  [&lt;ffffffff81059f6e&gt;] do_raw_spin_lock+0x19/0x1f
[  452.064012] RSP: 0018:ffff8800b6e83ba0  EFLAGS: 00000297
[  452.064012] RAX: 000000000000aaa9 RBX: ffff8800b6e83b40 RCX: 0000000000000002
[  452.064012] RDX: 00000000000000aa RSI: 000000000000000a RDI: ffff8800745c8110
[  452.064012] RBP: ffff8800b6e83ba0 R08: 000000000000c802 R09: 000000000000001c
[  452.064012] R10: ffff880071096c4e R11: 0000000000000006 R12: ffff8800b6e83b18
[  452.064012] R13: ffffffff8125d51e R14: ffff8800b6e83ba0 R15: ffff880072a589c0
[  452.064012] FS:  00007fdc0b81e700(0000) GS:ffff8800b6e80000(0000) knlGS:0000000000000000
[  452.064012] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  452.064012] CR2: 0000000000625208 CR3: 0000000074404000 CR4: 00000000000006a0
[  452.064012] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[  452.064012] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
[  452.064012] Process accel-pppd (pid: 6662, threadinfo ffff88007129a000, task ffff8800744f7410)
[  452.064012] Stack:
[  452.064012]  ffff8800b6e83bb0 ffffffff81256559 ffff8800b6e83bc0 ffffffff8121c64a
[  452.064012]  ffff8800b6e83bf0 ffffffff8121ec7a ffff880072a589c0 ffff880071096c62
[  452.064012]  0000000000000011 ffffffff81430024 ffff8800b6e83c80 ffffffff8121f276
[  452.064012] Call Trace:
[  452.064012]  &lt;IRQ&gt;
[  452.064012]  [&lt;ffffffff81256559&gt;] _raw_spin_lock+0xe/0x10
[  452.064012]  [&lt;ffffffff8121c64a&gt;] spin_lock+0x9/0xb
[  452.064012]  [&lt;ffffffff8121ec7a&gt;] udp_queue_rcv_skb+0x186/0x269
[  452.064012]  [&lt;ffffffff8121f276&gt;] __udp4_lib_rcv+0x297/0x4ae
[  452.064012]  [&lt;ffffffff8121c178&gt;] ? raw_rcv+0xe9/0xf0
[  452.064012]  [&lt;ffffffff8121f4a7&gt;] udp_rcv+0x1a/0x1c
[  452.064012]  [&lt;ffffffff811fe385&gt;] ip_local_deliver_finish+0x12b/0x1a5
[  452.064012]  [&lt;ffffffff811fe54e&gt;] ip_local_deliver+0x53/0x84
[  452.064012]  [&lt;ffffffff811fe1d0&gt;] ip_rcv_finish+0x2bc/0x2f3
[  452.064012]  [&lt;ffffffff811fe78f&gt;] ip_rcv+0x210/0x269
[  452.064012]  [&lt;ffffffff8101911e&gt;] ? kvm_clock_get_cycles+0x9/0xb
[  452.064012]  [&lt;ffffffff811d88cd&gt;] __netif_receive_skb+0x3a5/0x3f7
[  452.064012]  [&lt;ffffffff811d8eba&gt;] netif_receive_skb+0x57/0x5e
[  452.064012]  [&lt;ffffffff811cf30f&gt;] ? __netdev_alloc_skb+0x1f/0x3b
[  452.064012]  [&lt;ffffffffa0049126&gt;] virtnet_poll+0x4ba/0x5a4 [virtio_net]
[  452.064012]  [&lt;ffffffff811d9417&gt;] net_rx_action+0x73/0x184
[  452.064012]  [&lt;ffffffffa01b2cc2&gt;] ? l2tp_xmit_skb+0x27a/0x4ac [l2tp_core]
[  452.064012]  [&lt;ffffffff810343b9&gt;] __do_softirq+0xc3/0x1a8
[  452.064012]  [&lt;ffffffff81013b56&gt;] ? ack_APIC_irq+0x10/0x12
[  452.064012]  [&lt;ffffffff81256559&gt;] ? _raw_spin_lock+0xe/0x10
[  452.064012]  [&lt;ffffffff8125e0ac&gt;] call_softirq+0x1c/0x26
[  452.064012]  [&lt;ffffffff81003587&gt;] do_softirq+0x45/0x82
[  452.064012]  [&lt;ffffffff81034667&gt;] irq_exit+0x42/0x9c
[  452.064012]  [&lt;ffffffff8125e146&gt;] do_IRQ+0x8e/0xa5
[  452.064012]  [&lt;ffffffff8125676e&gt;] common_interrupt+0x6e/0x6e
[  452.064012]  &lt;EOI&gt;
[  452.064012]  [&lt;ffffffff810b82a1&gt;] ? kfree+0x8a/0xa3
[  452.064012]  [&lt;ffffffffa01b2cc2&gt;] ? l2tp_xmit_skb+0x27a/0x4ac [l2tp_core]
[  452.064012]  [&lt;ffffffffa01b2c25&gt;] ? l2tp_xmit_skb+0x1dd/0x4ac [l2tp_core]
[  452.064012]  [&lt;ffffffffa01c2d36&gt;] pppol2tp_sendmsg+0x15e/0x19c [l2tp_ppp]
[  452.064012]  [&lt;ffffffff811c7872&gt;] __sock_sendmsg_nosec+0x22/0x24
[  452.064012]  [&lt;ffffffff811c83bd&gt;] sock_sendmsg+0xa1/0xb6
[  452.064012]  [&lt;ffffffff81254e88&gt;] ? __schedule+0x5c1/0x616
[  452.064012]  [&lt;ffffffff8103c7c6&gt;] ? __dequeue_signal+0xb7/0x10c
[  452.064012]  [&lt;ffffffff810bbd21&gt;] ? fget_light+0x75/0x89
[  452.064012]  [&lt;ffffffff811c8444&gt;] ? sockfd_lookup_light+0x20/0x56
[  452.064012]  [&lt;ffffffff811c9b34&gt;] sys_sendto+0x10c/0x13b
[  452.064012]  [&lt;ffffffff8125cac2&gt;] system_call_fastpath+0x16/0x1b
[  452.064012] Code: 89 e5 72 0c 31 c0 48 81 ff 45 66 25 81 0f 92 c0 5d c3 55 b8 00 01 00 00 48 89 e5 f0 66 0f c1 07 0f b6 d4 38 d0 74 06 f3 90 8a 07 &lt;eb&gt; f6 5d c3 90 90 55 48 89 e5 9c 58 0f 1f 44 00 00 5d c3 55 48
[  452.064012] Call Trace:
[  452.064012]  &lt;IRQ&gt;  [&lt;ffffffff81256559&gt;] _raw_spin_lock+0xe/0x10
[  452.064012]  [&lt;ffffffff8121c64a&gt;] spin_lock+0x9/0xb
[  452.064012]  [&lt;ffffffff8121ec7a&gt;] udp_queue_rcv_skb+0x186/0x269
[  452.064012]  [&lt;ffffffff8121f276&gt;] __udp4_lib_rcv+0x297/0x4ae
[  452.064012]  [&lt;ffffffff8121c178&gt;] ? raw_rcv+0xe9/0xf0
[  452.064012]  [&lt;ffffffff8121f4a7&gt;] udp_rcv+0x1a/0x1c
[  452.064012]  [&lt;ffffffff811fe385&gt;] ip_local_deliver_finish+0x12b/0x1a5
[  452.064012]  [&lt;ffffffff811fe54e&gt;] ip_local_deliver+0x53/0x84
[  452.064012]  [&lt;ffffffff811fe1d0&gt;] ip_rcv_finish+0x2bc/0x2f3
[  452.064012]  [&lt;ffffffff811fe78f&gt;] ip_rcv+0x210/0x269
[  452.064012]  [&lt;ffffffff8101911e&gt;] ? kvm_clock_get_cycles+0x9/0xb
[  452.064012]  [&lt;ffffffff811d88cd&gt;] __netif_receive_skb+0x3a5/0x3f7
[  452.064012]  [&lt;ffffffff811d8eba&gt;] netif_receive_skb+0x57/0x5e
[  452.064012]  [&lt;ffffffff811cf30f&gt;] ? __netdev_alloc_skb+0x1f/0x3b
[  452.064012]  [&lt;ffffffffa0049126&gt;] virtnet_poll+0x4ba/0x5a4 [virtio_net]
[  452.064012]  [&lt;ffffffff811d9417&gt;] net_rx_action+0x73/0x184
[  452.064012]  [&lt;ffffffffa01b2cc2&gt;] ? l2tp_xmit_skb+0x27a/0x4ac [l2tp_core]
[  452.064012]  [&lt;ffffffff810343b9&gt;] __do_softirq+0xc3/0x1a8
[  452.064012]  [&lt;ffffffff81013b56&gt;] ? ack_APIC_irq+0x10/0x12
[  452.064012]  [&lt;ffffffff81256559&gt;] ? _raw_spin_lock+0xe/0x10
[  452.064012]  [&lt;ffffffff8125e0ac&gt;] call_softirq+0x1c/0x26
[  452.064012]  [&lt;ffffffff81003587&gt;] do_softirq+0x45/0x82
[  452.064012]  [&lt;ffffffff81034667&gt;] irq_exit+0x42/0x9c
[  452.064012]  [&lt;ffffffff8125e146&gt;] do_IRQ+0x8e/0xa5
[  452.064012]  [&lt;ffffffff8125676e&gt;] common_interrupt+0x6e/0x6e
[  452.064012]  &lt;EOI&gt;  [&lt;ffffffff810b82a1&gt;] ? kfree+0x8a/0xa3
[  452.064012]  [&lt;ffffffffa01b2cc2&gt;] ? l2tp_xmit_skb+0x27a/0x4ac [l2tp_core]
[  452.064012]  [&lt;ffffffffa01b2c25&gt;] ? l2tp_xmit_skb+0x1dd/0x4ac [l2tp_core]
[  452.064012]  [&lt;ffffffffa01c2d36&gt;] pppol2tp_sendmsg+0x15e/0x19c [l2tp_ppp]
[  452.064012]  [&lt;ffffffff811c7872&gt;] __sock_sendmsg_nosec+0x22/0x24
[  452.064012]  [&lt;ffffffff811c83bd&gt;] sock_sendmsg+0xa1/0xb6
[  452.064012]  [&lt;ffffffff81254e88&gt;] ? __schedule+0x5c1/0x616
[  452.064012]  [&lt;ffffffff8103c7c6&gt;] ? __dequeue_signal+0xb7/0x10c
[  452.064012]  [&lt;ffffffff810bbd21&gt;] ? fget_light+0x75/0x89
[  452.064012]  [&lt;ffffffff811c8444&gt;] ? sockfd_lookup_light+0x20/0x56
[  452.064012]  [&lt;ffffffff811c9b34&gt;] sys_sendto+0x10c/0x13b
[  452.064012]  [&lt;ffffffff8125cac2&gt;] system_call_fastpath+0x16/0x1b

Reported-by: François Cachereul &lt;f.cachereul@alphalink.fr&gt;
Tested-by: François Cachereul &lt;f.cachereul@alphalink.fr&gt;
Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Cc: James Chapman &lt;jchapman@katalix.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>ipv6: make lookups simpler and faster</title>
<updated>2013-10-09T04:01:25Z</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2013-10-03T22:42:29Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=efe4208f47f907b86f528788da711e8ab9dea44d'/>
<id>urn:sha1:efe4208f47f907b86f528788da711e8ab9dea44d</id>
<content type='text'>
TCP listener refactoring, part 4 :

To speed up inet lookups, we moved IPv4 addresses from inet to struct
sock_common

Now is time to do the same for IPv6, because it permits us to have fast
lookups for all kind of sockets, including upcoming SYN_RECV.

Getting IPv6 addresses in TCP lookups currently requires two extra cache
lines, plus a dereference (and memory stall).

inet6_sk(sk) does the dereference of inet_sk(__sk)-&gt;pinet6

This patch is way bigger than its IPv4 counter part, because for IPv4,
we could add aliases (inet_daddr, inet_rcv_saddr), while on IPv6,
it's not doable easily.

inet6_sk(sk)-&gt;daddr becomes sk-&gt;sk_v6_daddr
inet6_sk(sk)-&gt;rcv_saddr becomes sk-&gt;sk_v6_rcv_saddr

And timewait socket also have tw-&gt;tw_v6_daddr &amp; tw-&gt;tw_v6_rcv_saddr
at the same offset.

We get rid of INET6_TW_MATCH() as INET6_MATCH() is now the generic
macro.

Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
