<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/net/l2tp, branch linux-3.6.y</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>l2tp: fix oops in l2tp_eth_create() error path</title>
<updated>2012-11-17T21:18:53+00:00</updated>
<author>
<name>Tom Parkin</name>
<email>tparkin@katalix.com</email>
</author>
<published>2012-10-29T23:41:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=8d4948a7d059c2604bf24812c887f85dceba4d6d'/>
<id>8d4948a7d059c2604bf24812c887f85dceba4d6d</id>
<content type='text'>
[ Upstream commit 789336360e0a2aeb9750c16ab704a02cbe035e9e ]

When creating an L2TPv3 Ethernet session, if register_netdev() should fail for
any reason (for example, automatic naming for "l2tpeth%d" interfaces hits the
32k-interface limit), the netdev is freed in the error path.  However, the
l2tp_eth_sess structure's dev pointer is left uncleared, and this results in
l2tp_eth_delete() then attempting to unregister the same netdev later in the
session teardown.  This results in an oops.

To avoid this, clear the session dev pointer in the error path.

Signed-off-by: Tom Parkin &lt;tparkin@katalix.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 789336360e0a2aeb9750c16ab704a02cbe035e9e ]

When creating an L2TPv3 Ethernet session, if register_netdev() should fail for
any reason (for example, automatic naming for "l2tpeth%d" interfaces hits the
32k-interface limit), the netdev is freed in the error path.  However, the
l2tp_eth_sess structure's dev pointer is left uncleared, and this results in
l2tp_eth_delete() then attempting to unregister the same netdev later in the
session teardown.  This results in an oops.

To avoid this, clear the session dev pointer in the error path.

Signed-off-by: Tom Parkin &lt;tparkin@katalix.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>l2tp: fix return value check</title>
<updated>2012-09-27T17:18:19+00:00</updated>
<author>
<name>Wei Yongjun</name>
<email>yongjun_wei@trendmicro.com.cn</email>
</author>
<published>2012-09-24T18:29:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=7f8436a1269eaaf2d0b1054a325eddf4e14cb80d'/>
<id>7f8436a1269eaaf2d0b1054a325eddf4e14cb80d</id>
<content type='text'>
In case of error, the function genlmsg_put() returns NULL pointer
not ERR_PTR(). The IS_ERR() test in the return value check should
be replaced with NULL test.

dpatch engine is used to auto generate this patch.
(https://github.com/weiyj/dpatch)

Signed-off-by: Wei Yongjun &lt;yongjun_wei@trendmicro.com.cn&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 case of error, the function genlmsg_put() returns NULL pointer
not ERR_PTR(). The IS_ERR() test in the return value check should
be replaced with NULL test.

dpatch engine is used to auto generate this patch.
(https://github.com/weiyj/dpatch)

Signed-off-by: Wei Yongjun &lt;yongjun_wei@trendmicro.com.cn&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>l2tp: fix a typo in l2tp_eth_dev_recv()</title>
<updated>2012-09-04T19:54:55+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2012-09-04T19:54:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=c0cc88a7627c333de50b07b7c60b1d49d9d2e6cc'/>
<id>c0cc88a7627c333de50b07b7c60b1d49d9d2e6cc</id>
<content type='text'>
While investigating l2tp bug, I hit a bug in eth_type_trans(),
because not enough bytes were pulled in skb head.

Signed-off-by: Eric Dumazet &lt;edumazet@google.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>
While investigating l2tp bug, I hit a bug in eth_type_trans(),
because not enough bytes were pulled in skb head.

Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>l2tp: fix a lockdep splat</title>
<updated>2012-09-04T18:07:50+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2012-09-04T07:18:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=37159ef2c1ae1e696b24b260b241209a19f92c60'/>
<id>37159ef2c1ae1e696b24b260b241209a19f92c60</id>
<content type='text'>
Fixes following lockdep splat :

[ 1614.734896] =============================================
[ 1614.734898] [ INFO: possible recursive locking detected ]
[ 1614.734901] 3.6.0-rc3+ #782 Not tainted
[ 1614.734903] ---------------------------------------------
[ 1614.734905] swapper/11/0 is trying to acquire lock:
[ 1614.734907]  (slock-AF_INET){+.-...}, at: [&lt;ffffffffa0209d72&gt;] l2tp_xmit_skb+0x172/0xa50 [l2tp_core]
[ 1614.734920]
[ 1614.734920] but task is already holding lock:
[ 1614.734922]  (slock-AF_INET){+.-...}, at: [&lt;ffffffff815fce23&gt;] tcp_v4_err+0x163/0x6b0
[ 1614.734932]
[ 1614.734932] other info that might help us debug this:
[ 1614.734935]  Possible unsafe locking scenario:
[ 1614.734935]
[ 1614.734937]        CPU0
[ 1614.734938]        ----
[ 1614.734940]   lock(slock-AF_INET);
[ 1614.734943]   lock(slock-AF_INET);
[ 1614.734946]
[ 1614.734946]  *** DEADLOCK ***
[ 1614.734946]
[ 1614.734949]  May be due to missing lock nesting notation
[ 1614.734949]
[ 1614.734952] 7 locks held by swapper/11/0:
[ 1614.734954]  #0:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffff81592801&gt;] __netif_receive_skb+0x251/0xd00
[ 1614.734964]  #1:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffff815d319c&gt;] ip_local_deliver_finish+0x4c/0x4e0
[ 1614.734972]  #2:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffff8160d116&gt;] icmp_socket_deliver+0x46/0x230
[ 1614.734982]  #3:  (slock-AF_INET){+.-...}, at: [&lt;ffffffff815fce23&gt;] tcp_v4_err+0x163/0x6b0
[ 1614.734989]  #4:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffff815da240&gt;] ip_queue_xmit+0x0/0x680
[ 1614.734997]  #5:  (rcu_read_lock_bh){.+....}, at: [&lt;ffffffff815d9925&gt;] ip_finish_output+0x135/0x890
[ 1614.735004]  #6:  (rcu_read_lock_bh){.+....}, at: [&lt;ffffffff81595680&gt;] dev_queue_xmit+0x0/0xe00
[ 1614.735012]
[ 1614.735012] stack backtrace:
[ 1614.735016] Pid: 0, comm: swapper/11 Not tainted 3.6.0-rc3+ #782
[ 1614.735018] Call Trace:
[ 1614.735020]  &lt;IRQ&gt;  [&lt;ffffffff810a50ac&gt;] __lock_acquire+0x144c/0x1b10
[ 1614.735033]  [&lt;ffffffff810a334b&gt;] ? check_usage+0x9b/0x4d0
[ 1614.735037]  [&lt;ffffffff810a6762&gt;] ? mark_held_locks+0x82/0x130
[ 1614.735042]  [&lt;ffffffff810a5df0&gt;] lock_acquire+0x90/0x200
[ 1614.735047]  [&lt;ffffffffa0209d72&gt;] ? l2tp_xmit_skb+0x172/0xa50 [l2tp_core]
[ 1614.735051]  [&lt;ffffffff810a69ad&gt;] ? trace_hardirqs_on+0xd/0x10
[ 1614.735060]  [&lt;ffffffff81749b31&gt;] _raw_spin_lock+0x41/0x50
[ 1614.735065]  [&lt;ffffffffa0209d72&gt;] ? l2tp_xmit_skb+0x172/0xa50 [l2tp_core]
[ 1614.735069]  [&lt;ffffffffa0209d72&gt;] l2tp_xmit_skb+0x172/0xa50 [l2tp_core]
[ 1614.735075]  [&lt;ffffffffa014f7f2&gt;] l2tp_eth_dev_xmit+0x32/0x60 [l2tp_eth]
[ 1614.735079]  [&lt;ffffffff81595112&gt;] dev_hard_start_xmit+0x502/0xa70
[ 1614.735083]  [&lt;ffffffff81594c6e&gt;] ? dev_hard_start_xmit+0x5e/0xa70
[ 1614.735087]  [&lt;ffffffff815957c1&gt;] ? dev_queue_xmit+0x141/0xe00
[ 1614.735093]  [&lt;ffffffff815b622e&gt;] sch_direct_xmit+0xfe/0x290
[ 1614.735098]  [&lt;ffffffff81595865&gt;] dev_queue_xmit+0x1e5/0xe00
[ 1614.735102]  [&lt;ffffffff81595680&gt;] ? dev_hard_start_xmit+0xa70/0xa70
[ 1614.735106]  [&lt;ffffffff815b4daa&gt;] ? eth_header+0x3a/0xf0
[ 1614.735111]  [&lt;ffffffff8161d33e&gt;] ? fib_get_table+0x2e/0x280
[ 1614.735117]  [&lt;ffffffff8160a7e2&gt;] arp_xmit+0x22/0x60
[ 1614.735121]  [&lt;ffffffff8160a863&gt;] arp_send+0x43/0x50
[ 1614.735125]  [&lt;ffffffff8160b82f&gt;] arp_solicit+0x18f/0x450
[ 1614.735132]  [&lt;ffffffff8159d9da&gt;] neigh_probe+0x4a/0x70
[ 1614.735137]  [&lt;ffffffff815a191a&gt;] __neigh_event_send+0xea/0x300
[ 1614.735141]  [&lt;ffffffff815a1c93&gt;] neigh_resolve_output+0x163/0x260
[ 1614.735146]  [&lt;ffffffff815d9cf5&gt;] ip_finish_output+0x505/0x890
[ 1614.735150]  [&lt;ffffffff815d9925&gt;] ? ip_finish_output+0x135/0x890
[ 1614.735154]  [&lt;ffffffff815dae79&gt;] ip_output+0x59/0xf0
[ 1614.735158]  [&lt;ffffffff815da1cd&gt;] ip_local_out+0x2d/0xa0
[ 1614.735162]  [&lt;ffffffff815da403&gt;] ip_queue_xmit+0x1c3/0x680
[ 1614.735165]  [&lt;ffffffff815da240&gt;] ? ip_local_out+0xa0/0xa0
[ 1614.735172]  [&lt;ffffffff815f4402&gt;] tcp_transmit_skb+0x402/0xa60
[ 1614.735177]  [&lt;ffffffff815f5a11&gt;] tcp_retransmit_skb+0x1a1/0x620
[ 1614.735181]  [&lt;ffffffff815f7e93&gt;] tcp_retransmit_timer+0x393/0x960
[ 1614.735185]  [&lt;ffffffff815fce23&gt;] ? tcp_v4_err+0x163/0x6b0
[ 1614.735189]  [&lt;ffffffff815fd317&gt;] tcp_v4_err+0x657/0x6b0
[ 1614.735194]  [&lt;ffffffff8160d116&gt;] ? icmp_socket_deliver+0x46/0x230
[ 1614.735199]  [&lt;ffffffff8160d19e&gt;] icmp_socket_deliver+0xce/0x230
[ 1614.735203]  [&lt;ffffffff8160d116&gt;] ? icmp_socket_deliver+0x46/0x230
[ 1614.735208]  [&lt;ffffffff8160d464&gt;] icmp_unreach+0xe4/0x2c0
[ 1614.735213]  [&lt;ffffffff8160e520&gt;] icmp_rcv+0x350/0x4a0
[ 1614.735217]  [&lt;ffffffff815d3285&gt;] ip_local_deliver_finish+0x135/0x4e0
[ 1614.735221]  [&lt;ffffffff815d319c&gt;] ? ip_local_deliver_finish+0x4c/0x4e0
[ 1614.735225]  [&lt;ffffffff815d3ffa&gt;] ip_local_deliver+0x4a/0x90
[ 1614.735229]  [&lt;ffffffff815d37b7&gt;] ip_rcv_finish+0x187/0x730
[ 1614.735233]  [&lt;ffffffff815d425d&gt;] ip_rcv+0x21d/0x300
[ 1614.735237]  [&lt;ffffffff81592a1b&gt;] __netif_receive_skb+0x46b/0xd00
[ 1614.735241]  [&lt;ffffffff81592801&gt;] ? __netif_receive_skb+0x251/0xd00
[ 1614.735245]  [&lt;ffffffff81593368&gt;] process_backlog+0xb8/0x180
[ 1614.735249]  [&lt;ffffffff81593cf9&gt;] net_rx_action+0x159/0x330
[ 1614.735257]  [&lt;ffffffff810491f0&gt;] __do_softirq+0xd0/0x3e0
[ 1614.735264]  [&lt;ffffffff8109ed24&gt;] ? tick_program_event+0x24/0x30
[ 1614.735270]  [&lt;ffffffff8175419c&gt;] call_softirq+0x1c/0x30
[ 1614.735278]  [&lt;ffffffff8100425d&gt;] do_softirq+0x8d/0xc0
[ 1614.735282]  [&lt;ffffffff8104983e&gt;] irq_exit+0xae/0xe0
[ 1614.735287]  [&lt;ffffffff8175494e&gt;] smp_apic_timer_interrupt+0x6e/0x99
[ 1614.735291]  [&lt;ffffffff81753a1c&gt;] apic_timer_interrupt+0x6c/0x80
[ 1614.735293]  &lt;EOI&gt;  [&lt;ffffffff810a14ad&gt;] ? trace_hardirqs_off+0xd/0x10
[ 1614.735306]  [&lt;ffffffff81336f85&gt;] ? intel_idle+0xf5/0x150
[ 1614.735310]  [&lt;ffffffff81336f7e&gt;] ? intel_idle+0xee/0x150
[ 1614.735317]  [&lt;ffffffff814e6ea9&gt;] cpuidle_enter+0x19/0x20
[ 1614.735321]  [&lt;ffffffff814e7538&gt;] cpuidle_idle_call+0xa8/0x630
[ 1614.735327]  [&lt;ffffffff8100c1ba&gt;] cpu_idle+0x8a/0xe0
[ 1614.735333]  [&lt;ffffffff8173762e&gt;] start_secondary+0x220/0x222

Signed-off-by: Eric Dumazet &lt;edumazet@google.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>
Fixes following lockdep splat :

[ 1614.734896] =============================================
[ 1614.734898] [ INFO: possible recursive locking detected ]
[ 1614.734901] 3.6.0-rc3+ #782 Not tainted
[ 1614.734903] ---------------------------------------------
[ 1614.734905] swapper/11/0 is trying to acquire lock:
[ 1614.734907]  (slock-AF_INET){+.-...}, at: [&lt;ffffffffa0209d72&gt;] l2tp_xmit_skb+0x172/0xa50 [l2tp_core]
[ 1614.734920]
[ 1614.734920] but task is already holding lock:
[ 1614.734922]  (slock-AF_INET){+.-...}, at: [&lt;ffffffff815fce23&gt;] tcp_v4_err+0x163/0x6b0
[ 1614.734932]
[ 1614.734932] other info that might help us debug this:
[ 1614.734935]  Possible unsafe locking scenario:
[ 1614.734935]
[ 1614.734937]        CPU0
[ 1614.734938]        ----
[ 1614.734940]   lock(slock-AF_INET);
[ 1614.734943]   lock(slock-AF_INET);
[ 1614.734946]
[ 1614.734946]  *** DEADLOCK ***
[ 1614.734946]
[ 1614.734949]  May be due to missing lock nesting notation
[ 1614.734949]
[ 1614.734952] 7 locks held by swapper/11/0:
[ 1614.734954]  #0:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffff81592801&gt;] __netif_receive_skb+0x251/0xd00
[ 1614.734964]  #1:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffff815d319c&gt;] ip_local_deliver_finish+0x4c/0x4e0
[ 1614.734972]  #2:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffff8160d116&gt;] icmp_socket_deliver+0x46/0x230
[ 1614.734982]  #3:  (slock-AF_INET){+.-...}, at: [&lt;ffffffff815fce23&gt;] tcp_v4_err+0x163/0x6b0
[ 1614.734989]  #4:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffff815da240&gt;] ip_queue_xmit+0x0/0x680
[ 1614.734997]  #5:  (rcu_read_lock_bh){.+....}, at: [&lt;ffffffff815d9925&gt;] ip_finish_output+0x135/0x890
[ 1614.735004]  #6:  (rcu_read_lock_bh){.+....}, at: [&lt;ffffffff81595680&gt;] dev_queue_xmit+0x0/0xe00
[ 1614.735012]
[ 1614.735012] stack backtrace:
[ 1614.735016] Pid: 0, comm: swapper/11 Not tainted 3.6.0-rc3+ #782
[ 1614.735018] Call Trace:
[ 1614.735020]  &lt;IRQ&gt;  [&lt;ffffffff810a50ac&gt;] __lock_acquire+0x144c/0x1b10
[ 1614.735033]  [&lt;ffffffff810a334b&gt;] ? check_usage+0x9b/0x4d0
[ 1614.735037]  [&lt;ffffffff810a6762&gt;] ? mark_held_locks+0x82/0x130
[ 1614.735042]  [&lt;ffffffff810a5df0&gt;] lock_acquire+0x90/0x200
[ 1614.735047]  [&lt;ffffffffa0209d72&gt;] ? l2tp_xmit_skb+0x172/0xa50 [l2tp_core]
[ 1614.735051]  [&lt;ffffffff810a69ad&gt;] ? trace_hardirqs_on+0xd/0x10
[ 1614.735060]  [&lt;ffffffff81749b31&gt;] _raw_spin_lock+0x41/0x50
[ 1614.735065]  [&lt;ffffffffa0209d72&gt;] ? l2tp_xmit_skb+0x172/0xa50 [l2tp_core]
[ 1614.735069]  [&lt;ffffffffa0209d72&gt;] l2tp_xmit_skb+0x172/0xa50 [l2tp_core]
[ 1614.735075]  [&lt;ffffffffa014f7f2&gt;] l2tp_eth_dev_xmit+0x32/0x60 [l2tp_eth]
[ 1614.735079]  [&lt;ffffffff81595112&gt;] dev_hard_start_xmit+0x502/0xa70
[ 1614.735083]  [&lt;ffffffff81594c6e&gt;] ? dev_hard_start_xmit+0x5e/0xa70
[ 1614.735087]  [&lt;ffffffff815957c1&gt;] ? dev_queue_xmit+0x141/0xe00
[ 1614.735093]  [&lt;ffffffff815b622e&gt;] sch_direct_xmit+0xfe/0x290
[ 1614.735098]  [&lt;ffffffff81595865&gt;] dev_queue_xmit+0x1e5/0xe00
[ 1614.735102]  [&lt;ffffffff81595680&gt;] ? dev_hard_start_xmit+0xa70/0xa70
[ 1614.735106]  [&lt;ffffffff815b4daa&gt;] ? eth_header+0x3a/0xf0
[ 1614.735111]  [&lt;ffffffff8161d33e&gt;] ? fib_get_table+0x2e/0x280
[ 1614.735117]  [&lt;ffffffff8160a7e2&gt;] arp_xmit+0x22/0x60
[ 1614.735121]  [&lt;ffffffff8160a863&gt;] arp_send+0x43/0x50
[ 1614.735125]  [&lt;ffffffff8160b82f&gt;] arp_solicit+0x18f/0x450
[ 1614.735132]  [&lt;ffffffff8159d9da&gt;] neigh_probe+0x4a/0x70
[ 1614.735137]  [&lt;ffffffff815a191a&gt;] __neigh_event_send+0xea/0x300
[ 1614.735141]  [&lt;ffffffff815a1c93&gt;] neigh_resolve_output+0x163/0x260
[ 1614.735146]  [&lt;ffffffff815d9cf5&gt;] ip_finish_output+0x505/0x890
[ 1614.735150]  [&lt;ffffffff815d9925&gt;] ? ip_finish_output+0x135/0x890
[ 1614.735154]  [&lt;ffffffff815dae79&gt;] ip_output+0x59/0xf0
[ 1614.735158]  [&lt;ffffffff815da1cd&gt;] ip_local_out+0x2d/0xa0
[ 1614.735162]  [&lt;ffffffff815da403&gt;] ip_queue_xmit+0x1c3/0x680
[ 1614.735165]  [&lt;ffffffff815da240&gt;] ? ip_local_out+0xa0/0xa0
[ 1614.735172]  [&lt;ffffffff815f4402&gt;] tcp_transmit_skb+0x402/0xa60
[ 1614.735177]  [&lt;ffffffff815f5a11&gt;] tcp_retransmit_skb+0x1a1/0x620
[ 1614.735181]  [&lt;ffffffff815f7e93&gt;] tcp_retransmit_timer+0x393/0x960
[ 1614.735185]  [&lt;ffffffff815fce23&gt;] ? tcp_v4_err+0x163/0x6b0
[ 1614.735189]  [&lt;ffffffff815fd317&gt;] tcp_v4_err+0x657/0x6b0
[ 1614.735194]  [&lt;ffffffff8160d116&gt;] ? icmp_socket_deliver+0x46/0x230
[ 1614.735199]  [&lt;ffffffff8160d19e&gt;] icmp_socket_deliver+0xce/0x230
[ 1614.735203]  [&lt;ffffffff8160d116&gt;] ? icmp_socket_deliver+0x46/0x230
[ 1614.735208]  [&lt;ffffffff8160d464&gt;] icmp_unreach+0xe4/0x2c0
[ 1614.735213]  [&lt;ffffffff8160e520&gt;] icmp_rcv+0x350/0x4a0
[ 1614.735217]  [&lt;ffffffff815d3285&gt;] ip_local_deliver_finish+0x135/0x4e0
[ 1614.735221]  [&lt;ffffffff815d319c&gt;] ? ip_local_deliver_finish+0x4c/0x4e0
[ 1614.735225]  [&lt;ffffffff815d3ffa&gt;] ip_local_deliver+0x4a/0x90
[ 1614.735229]  [&lt;ffffffff815d37b7&gt;] ip_rcv_finish+0x187/0x730
[ 1614.735233]  [&lt;ffffffff815d425d&gt;] ip_rcv+0x21d/0x300
[ 1614.735237]  [&lt;ffffffff81592a1b&gt;] __netif_receive_skb+0x46b/0xd00
[ 1614.735241]  [&lt;ffffffff81592801&gt;] ? __netif_receive_skb+0x251/0xd00
[ 1614.735245]  [&lt;ffffffff81593368&gt;] process_backlog+0xb8/0x180
[ 1614.735249]  [&lt;ffffffff81593cf9&gt;] net_rx_action+0x159/0x330
[ 1614.735257]  [&lt;ffffffff810491f0&gt;] __do_softirq+0xd0/0x3e0
[ 1614.735264]  [&lt;ffffffff8109ed24&gt;] ? tick_program_event+0x24/0x30
[ 1614.735270]  [&lt;ffffffff8175419c&gt;] call_softirq+0x1c/0x30
[ 1614.735278]  [&lt;ffffffff8100425d&gt;] do_softirq+0x8d/0xc0
[ 1614.735282]  [&lt;ffffffff8104983e&gt;] irq_exit+0xae/0xe0
[ 1614.735287]  [&lt;ffffffff8175494e&gt;] smp_apic_timer_interrupt+0x6e/0x99
[ 1614.735291]  [&lt;ffffffff81753a1c&gt;] apic_timer_interrupt+0x6c/0x80
[ 1614.735293]  &lt;EOI&gt;  [&lt;ffffffff810a14ad&gt;] ? trace_hardirqs_off+0xd/0x10
[ 1614.735306]  [&lt;ffffffff81336f85&gt;] ? intel_idle+0xf5/0x150
[ 1614.735310]  [&lt;ffffffff81336f7e&gt;] ? intel_idle+0xee/0x150
[ 1614.735317]  [&lt;ffffffff814e6ea9&gt;] cpuidle_enter+0x19/0x20
[ 1614.735321]  [&lt;ffffffff814e7538&gt;] cpuidle_idle_call+0xa8/0x630
[ 1614.735327]  [&lt;ffffffff8100c1ba&gt;] cpu_idle+0x8a/0xe0
[ 1614.735333]  [&lt;ffffffff8173762e&gt;] start_secondary+0x220/0x222

Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>l2tp: avoid to use synchronize_rcu in tunnel free function</title>
<updated>2012-08-30T16:31:03+00:00</updated>
<author>
<name>xeb@mail.ru</name>
<email>xeb@mail.ru</email>
</author>
<published>2012-08-24T01:07:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=99469c32f79a32d8481f87be0d3c66dad286f4ec'/>
<id>99469c32f79a32d8481f87be0d3c66dad286f4ec</id>
<content type='text'>
Avoid to use synchronize_rcu in l2tp_tunnel_free because context may be
atomic.

Signed-off-by: Dmitry Kozlov &lt;xeb@mail.ru&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>
Avoid to use synchronize_rcu in l2tp_tunnel_free because context may be
atomic.

Signed-off-by: Dmitry Kozlov &lt;xeb@mail.ru&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>l2tp: fix info leak via getsockname()</title>
<updated>2012-08-16T04:36:31+00:00</updated>
<author>
<name>Mathias Krause</name>
<email>minipli@googlemail.com</email>
</author>
<published>2012-08-15T11:31:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=04d4fbca1017c11381e7d82acea21dd741e748bc'/>
<id>04d4fbca1017c11381e7d82acea21dd741e748bc</id>
<content type='text'>
The L2TP code for IPv6 fails to initialize the l2tp_unused member of
struct sockaddr_l2tpip6 and that for leaks two bytes kernel stack via
the getsockname() syscall. Initialize l2tp_unused with 0 to avoid the
info leak.

Signed-off-by: Mathias Krause &lt;minipli@googlemail.com&gt;
Cc: James Chapman &lt;jchapman@katalix.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>
The L2TP code for IPv6 fails to initialize the l2tp_unused member of
struct sockaddr_l2tpip6 and that for leaks two bytes kernel stack via
the getsockname() syscall. Initialize l2tp_unused with 0 to avoid the
info leak.

Signed-off-by: Mathias Krause &lt;minipli@googlemail.com&gt;
Cc: James Chapman &lt;jchapman@katalix.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: l2tp_eth: provide tx_dropped counter</title>
<updated>2012-06-29T07:52:32+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2012-06-28T20:15:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=b8c8430726e5bd552e01dacc5a44f3f83f7446ca'/>
<id>b8c8430726e5bd552e01dacc5a44f3f83f7446ca</id>
<content type='text'>
Change l2tp_xmit_skb() to return NET_XMIT_DROP in case skb is dropped.

Use kfree_skb() instead dev_kfree_skb() for drop_monitor pleasure.

Support tx_dropped counter for l2tp_eth

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>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change l2tp_xmit_skb() to return NET_XMIT_DROP in case skb is dropped.

Use kfree_skb() instead dev_kfree_skb() for drop_monitor pleasure.

Support tx_dropped counter for l2tp_eth

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;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: Use NLMSG_DEFAULT_SIZE in combination with nlmsg_new()</title>
<updated>2012-06-29T00:56:43+00:00</updated>
<author>
<name>Thomas Graf</name>
<email>tgraf@suug.ch</email>
</author>
<published>2012-06-28T03:57:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=58050fce3530939372e6c2f4b4beb76fcb4caa65'/>
<id>58050fce3530939372e6c2f4b4beb76fcb4caa65</id>
<content type='text'>
Using NLMSG_GOODSIZE results in multiple pages being used as
nlmsg_new() will automatically add the size of the netlink
header to the payload thus exceeding the page limit.

NLMSG_DEFAULT_SIZE takes this into account.

Signed-off-by: Thomas Graf &lt;tgraf@suug.ch&gt;
Cc: Jiri Pirko &lt;jpirko@redhat.com&gt;
Cc: Dmitry Eremin-Solenikov &lt;dbaryshkov@gmail.com&gt;
Cc: Sergey Lapin &lt;slapin@ossfans.org&gt;
Cc: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Cc: Lauro Ramos Venancio &lt;lauro.venancio@openbossa.org&gt;
Cc: Aloisio Almeida Jr &lt;aloisio.almeida@openbossa.org&gt;
Cc: Samuel Ortiz &lt;sameo@linux.intel.com&gt;
Reviewed-by: Jiri Pirko &lt;jpirko@redhat.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>
Using NLMSG_GOODSIZE results in multiple pages being used as
nlmsg_new() will automatically add the size of the netlink
header to the payload thus exceeding the page limit.

NLMSG_DEFAULT_SIZE takes this into account.

Signed-off-by: Thomas Graf &lt;tgraf@suug.ch&gt;
Cc: Jiri Pirko &lt;jpirko@redhat.com&gt;
Cc: Dmitry Eremin-Solenikov &lt;dbaryshkov@gmail.com&gt;
Cc: Sergey Lapin &lt;slapin@ossfans.org&gt;
Cc: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Cc: Lauro Ramos Venancio &lt;lauro.venancio@openbossa.org&gt;
Cc: Aloisio Almeida Jr &lt;aloisio.almeida@openbossa.org&gt;
Cc: Samuel Ortiz &lt;sameo@linux.intel.com&gt;
Reviewed-by: Jiri Pirko &lt;jpirko@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net</title>
<updated>2012-06-29T00:37:00+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2012-06-29T00:37:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=b26d344c6b87058ae3e8f919a18580abfc4204eb'/>
<id>b26d344c6b87058ae3e8f919a18580abfc4204eb</id>
<content type='text'>
Conflicts:
	drivers/net/caif/caif_hsi.c
	drivers/net/usb/qmi_wwan.c

The qmi_wwan merge was trivial.

The caif_hsi.c, on the other hand, was not.  It's a conflict between
1c385f1fdf6f9c66d982802cd74349c040980b50 ("caif-hsi: Replace platform
device with ops structure.") in the net-next tree and commit
39abbaef19cd0a30be93794aa4773c779c3eb1f3 ("caif-hsi: Postpone init of
HIS until open()") in the net tree.

I did my best with that one and will ask Sjur to check it out.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Conflicts:
	drivers/net/caif/caif_hsi.c
	drivers/net/usb/qmi_wwan.c

The qmi_wwan merge was trivial.

The caif_hsi.c, on the other hand, was not.  It's a conflict between
1c385f1fdf6f9c66d982802cd74349c040980b50 ("caif-hsi: Replace platform
device with ops structure.") in the net-next tree and commit
39abbaef19cd0a30be93794aa4773c779c3eb1f3 ("caif-hsi: Postpone init of
HIS until open()") in the net tree.

I did my best with that one and will ask Sjur to check it out.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: l2tp_eth: use LLTX to avoid LOCKDEP splats</title>
<updated>2012-06-26T23:42:33+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2012-06-25T05:35:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=a2842a1e66329798d66563b52faec1a299ec4f73'/>
<id>a2842a1e66329798d66563b52faec1a299ec4f73</id>
<content type='text'>
Denys Fedoryshchenko reported a LOCKDEP issue with l2tp code.

[ 8683.927442] ======================================================
[ 8683.927555] [ INFO: possible circular locking dependency detected ]
[ 8683.927672] 3.4.1-build-0061 #14 Not tainted
[ 8683.927782] -------------------------------------------------------
[ 8683.927895] swapper/0/0 is trying to acquire lock:
[ 8683.928007]  (slock-AF_INET){+.-...}, at: [&lt;e0fc73ec&gt;]
l2tp_xmit_skb+0x173/0x47e [l2tp_core]
[ 8683.928121]
[ 8683.928121] but task is already holding lock:
[ 8683.928121]  (_xmit_ETHER#2){+.-...}, at: [&lt;c02f062d&gt;]
sch_direct_xmit+0x36/0x119
[ 8683.928121]
[ 8683.928121] which lock already depends on the new lock.
[ 8683.928121]
[ 8683.928121]
[ 8683.928121] the existing dependency chain (in reverse order) is:
[ 8683.928121]
[ 8683.928121] -&gt; #1 (_xmit_ETHER#2){+.-...}:
[ 8683.928121]        [&lt;c015a561&gt;] lock_acquire+0x71/0x85
[ 8683.928121]        [&lt;c034da2d&gt;] _raw_spin_lock+0x33/0x40
[ 8683.928121]        [&lt;c0304e0c&gt;] ip_send_reply+0xf2/0x1ce
[ 8683.928121]        [&lt;c0317dbc&gt;] tcp_v4_send_reset+0x153/0x16f
[ 8683.928121]        [&lt;c0317f4a&gt;] tcp_v4_do_rcv+0x172/0x194
[ 8683.928121]        [&lt;c031929b&gt;] tcp_v4_rcv+0x387/0x5a0
[ 8683.928121]        [&lt;c03001d0&gt;] ip_local_deliver_finish+0x13a/0x1e9
[ 8683.928121]        [&lt;c0300645&gt;] NF_HOOK.clone.11+0x46/0x4d
[ 8683.928121]        [&lt;c030075b&gt;] ip_local_deliver+0x41/0x45
[ 8683.928121]        [&lt;c03005dd&gt;] ip_rcv_finish+0x31a/0x33c
[ 8683.928121]        [&lt;c0300645&gt;] NF_HOOK.clone.11+0x46/0x4d
[ 8683.928121]        [&lt;c0300960&gt;] ip_rcv+0x201/0x23d
[ 8683.928121]        [&lt;c02de91b&gt;] __netif_receive_skb+0x329/0x378
[ 8683.928121]        [&lt;c02deae8&gt;] netif_receive_skb+0x4e/0x7d
[ 8683.928121]        [&lt;e08d5ef3&gt;] rtl8139_poll+0x243/0x33d [8139too]
[ 8683.928121]        [&lt;c02df103&gt;] net_rx_action+0x90/0x15d
[ 8683.928121]        [&lt;c012b2b5&gt;] __do_softirq+0x7b/0x118
[ 8683.928121]
[ 8683.928121] -&gt; #0 (slock-AF_INET){+.-...}:
[ 8683.928121]        [&lt;c0159f1b&gt;] __lock_acquire+0x9a3/0xc27
[ 8683.928121]        [&lt;c015a561&gt;] lock_acquire+0x71/0x85
[ 8683.928121]        [&lt;c034da2d&gt;] _raw_spin_lock+0x33/0x40
[ 8683.928121]        [&lt;e0fc73ec&gt;] l2tp_xmit_skb+0x173/0x47e
[l2tp_core]
[ 8683.928121]        [&lt;e0fe31fb&gt;] l2tp_eth_dev_xmit+0x1a/0x2f
[l2tp_eth]
[ 8683.928121]        [&lt;c02e01e7&gt;] dev_hard_start_xmit+0x333/0x3f2
[ 8683.928121]        [&lt;c02f064c&gt;] sch_direct_xmit+0x55/0x119
[ 8683.928121]        [&lt;c02e0528&gt;] dev_queue_xmit+0x282/0x418
[ 8683.928121]        [&lt;c031f4fb&gt;] NF_HOOK.clone.19+0x45/0x4c
[ 8683.928121]        [&lt;c031f524&gt;] arp_xmit+0x22/0x24
[ 8683.928121]        [&lt;c031f567&gt;] arp_send+0x41/0x48
[ 8683.928121]        [&lt;c031fa7d&gt;] arp_process+0x289/0x491
[ 8683.928121]        [&lt;c031f4fb&gt;] NF_HOOK.clone.19+0x45/0x4c
[ 8683.928121]        [&lt;c031f7a0&gt;] arp_rcv+0xb1/0xc3
[ 8683.928121]        [&lt;c02de91b&gt;] __netif_receive_skb+0x329/0x378
[ 8683.928121]        [&lt;c02de9d3&gt;] process_backlog+0x69/0x130
[ 8683.928121]        [&lt;c02df103&gt;] net_rx_action+0x90/0x15d
[ 8683.928121]        [&lt;c012b2b5&gt;] __do_softirq+0x7b/0x118
[ 8683.928121]
[ 8683.928121] other info that might help us debug this:
[ 8683.928121]
[ 8683.928121]  Possible unsafe locking scenario:
[ 8683.928121]
[ 8683.928121]        CPU0                    CPU1
[ 8683.928121]        ----                    ----
[ 8683.928121]   lock(_xmit_ETHER#2);
[ 8683.928121]                                lock(slock-AF_INET);
[ 8683.928121]                                lock(_xmit_ETHER#2);
[ 8683.928121]   lock(slock-AF_INET);
[ 8683.928121]
[ 8683.928121]  *** DEADLOCK ***
[ 8683.928121]
[ 8683.928121] 3 locks held by swapper/0/0:
[ 8683.928121]  #0:  (rcu_read_lock){.+.+..}, at: [&lt;c02dbc10&gt;]
rcu_lock_acquire+0x0/0x30
[ 8683.928121]  #1:  (rcu_read_lock_bh){.+....}, at: [&lt;c02dbc10&gt;]
rcu_lock_acquire+0x0/0x30
[ 8683.928121]  #2:  (_xmit_ETHER#2){+.-...}, at: [&lt;c02f062d&gt;]
sch_direct_xmit+0x36/0x119
[ 8683.928121]
[ 8683.928121] stack backtrace:
[ 8683.928121] Pid: 0, comm: swapper/0 Not tainted 3.4.1-build-0061 #14
[ 8683.928121] Call Trace:
[ 8683.928121]  [&lt;c034bdd2&gt;] ? printk+0x18/0x1a
[ 8683.928121]  [&lt;c0158904&gt;] print_circular_bug+0x1ac/0x1b6
[ 8683.928121]  [&lt;c0159f1b&gt;] __lock_acquire+0x9a3/0xc27
[ 8683.928121]  [&lt;c015a561&gt;] lock_acquire+0x71/0x85
[ 8683.928121]  [&lt;e0fc73ec&gt;] ? l2tp_xmit_skb+0x173/0x47e [l2tp_core]
[ 8683.928121]  [&lt;c034da2d&gt;] _raw_spin_lock+0x33/0x40
[ 8683.928121]  [&lt;e0fc73ec&gt;] ? l2tp_xmit_skb+0x173/0x47e [l2tp_core]
[ 8683.928121]  [&lt;e0fc73ec&gt;] l2tp_xmit_skb+0x173/0x47e [l2tp_core]
[ 8683.928121]  [&lt;e0fe31fb&gt;] l2tp_eth_dev_xmit+0x1a/0x2f [l2tp_eth]
[ 8683.928121]  [&lt;c02e01e7&gt;] dev_hard_start_xmit+0x333/0x3f2
[ 8683.928121]  [&lt;c02f064c&gt;] sch_direct_xmit+0x55/0x119
[ 8683.928121]  [&lt;c02e0528&gt;] dev_queue_xmit+0x282/0x418
[ 8683.928121]  [&lt;c02e02a6&gt;] ? dev_hard_start_xmit+0x3f2/0x3f2
[ 8683.928121]  [&lt;c031f4fb&gt;] NF_HOOK.clone.19+0x45/0x4c
[ 8683.928121]  [&lt;c031f524&gt;] arp_xmit+0x22/0x24
[ 8683.928121]  [&lt;c02e02a6&gt;] ? dev_hard_start_xmit+0x3f2/0x3f2
[ 8683.928121]  [&lt;c031f567&gt;] arp_send+0x41/0x48
[ 8683.928121]  [&lt;c031fa7d&gt;] arp_process+0x289/0x491
[ 8683.928121]  [&lt;c031f7f4&gt;] ? __neigh_lookup.clone.20+0x42/0x42
[ 8683.928121]  [&lt;c031f4fb&gt;] NF_HOOK.clone.19+0x45/0x4c
[ 8683.928121]  [&lt;c031f7a0&gt;] arp_rcv+0xb1/0xc3
[ 8683.928121]  [&lt;c031f7f4&gt;] ? __neigh_lookup.clone.20+0x42/0x42
[ 8683.928121]  [&lt;c02de91b&gt;] __netif_receive_skb+0x329/0x378
[ 8683.928121]  [&lt;c02de9d3&gt;] process_backlog+0x69/0x130
[ 8683.928121]  [&lt;c02df103&gt;] net_rx_action+0x90/0x15d
[ 8683.928121]  [&lt;c012b2b5&gt;] __do_softirq+0x7b/0x118
[ 8683.928121]  [&lt;c012b23a&gt;] ? local_bh_enable+0xd/0xd
[ 8683.928121]  &lt;IRQ&gt;  [&lt;c012b4d0&gt;] ? irq_exit+0x41/0x91
[ 8683.928121]  [&lt;c0103c6f&gt;] ? do_IRQ+0x79/0x8d
[ 8683.928121]  [&lt;c0157ea1&gt;] ? trace_hardirqs_off_caller+0x2e/0x86
[ 8683.928121]  [&lt;c034ef6e&gt;] ? common_interrupt+0x2e/0x34
[ 8683.928121]  [&lt;c0108a33&gt;] ? default_idle+0x23/0x38
[ 8683.928121]  [&lt;c01091a8&gt;] ? cpu_idle+0x55/0x6f
[ 8683.928121]  [&lt;c033df25&gt;] ? rest_init+0xa1/0xa7
[ 8683.928121]  [&lt;c033de84&gt;] ? __read_lock_failed+0x14/0x14
[ 8683.928121]  [&lt;c0498745&gt;] ? start_kernel+0x303/0x30a
[ 8683.928121]  [&lt;c0498209&gt;] ? repair_env_string+0x51/0x51
[ 8683.928121]  [&lt;c04980a8&gt;] ? i386_start_kernel+0xa8/0xaf

It appears that like most virtual devices, l2tp should be converted to
LLTX mode.

This patch takes care of statistics using atomic_long in both RX and TX
paths, and fix a bug in l2tp_eth_dev_recv(), which was caching skb-&gt;data
before a pskb_may_pull() call.

Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Reported-by: Denys Fedoryshchenko &lt;denys@visp.net.lb&gt;
Cc: James Chapman &lt;jchapman@katalix.com&gt;
Cc: Hong zhi guo &lt;honkiko@gmail.com&gt;
Cc: Francois Romieu &lt;romieu@fr.zoreil.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>
Denys Fedoryshchenko reported a LOCKDEP issue with l2tp code.

[ 8683.927442] ======================================================
[ 8683.927555] [ INFO: possible circular locking dependency detected ]
[ 8683.927672] 3.4.1-build-0061 #14 Not tainted
[ 8683.927782] -------------------------------------------------------
[ 8683.927895] swapper/0/0 is trying to acquire lock:
[ 8683.928007]  (slock-AF_INET){+.-...}, at: [&lt;e0fc73ec&gt;]
l2tp_xmit_skb+0x173/0x47e [l2tp_core]
[ 8683.928121]
[ 8683.928121] but task is already holding lock:
[ 8683.928121]  (_xmit_ETHER#2){+.-...}, at: [&lt;c02f062d&gt;]
sch_direct_xmit+0x36/0x119
[ 8683.928121]
[ 8683.928121] which lock already depends on the new lock.
[ 8683.928121]
[ 8683.928121]
[ 8683.928121] the existing dependency chain (in reverse order) is:
[ 8683.928121]
[ 8683.928121] -&gt; #1 (_xmit_ETHER#2){+.-...}:
[ 8683.928121]        [&lt;c015a561&gt;] lock_acquire+0x71/0x85
[ 8683.928121]        [&lt;c034da2d&gt;] _raw_spin_lock+0x33/0x40
[ 8683.928121]        [&lt;c0304e0c&gt;] ip_send_reply+0xf2/0x1ce
[ 8683.928121]        [&lt;c0317dbc&gt;] tcp_v4_send_reset+0x153/0x16f
[ 8683.928121]        [&lt;c0317f4a&gt;] tcp_v4_do_rcv+0x172/0x194
[ 8683.928121]        [&lt;c031929b&gt;] tcp_v4_rcv+0x387/0x5a0
[ 8683.928121]        [&lt;c03001d0&gt;] ip_local_deliver_finish+0x13a/0x1e9
[ 8683.928121]        [&lt;c0300645&gt;] NF_HOOK.clone.11+0x46/0x4d
[ 8683.928121]        [&lt;c030075b&gt;] ip_local_deliver+0x41/0x45
[ 8683.928121]        [&lt;c03005dd&gt;] ip_rcv_finish+0x31a/0x33c
[ 8683.928121]        [&lt;c0300645&gt;] NF_HOOK.clone.11+0x46/0x4d
[ 8683.928121]        [&lt;c0300960&gt;] ip_rcv+0x201/0x23d
[ 8683.928121]        [&lt;c02de91b&gt;] __netif_receive_skb+0x329/0x378
[ 8683.928121]        [&lt;c02deae8&gt;] netif_receive_skb+0x4e/0x7d
[ 8683.928121]        [&lt;e08d5ef3&gt;] rtl8139_poll+0x243/0x33d [8139too]
[ 8683.928121]        [&lt;c02df103&gt;] net_rx_action+0x90/0x15d
[ 8683.928121]        [&lt;c012b2b5&gt;] __do_softirq+0x7b/0x118
[ 8683.928121]
[ 8683.928121] -&gt; #0 (slock-AF_INET){+.-...}:
[ 8683.928121]        [&lt;c0159f1b&gt;] __lock_acquire+0x9a3/0xc27
[ 8683.928121]        [&lt;c015a561&gt;] lock_acquire+0x71/0x85
[ 8683.928121]        [&lt;c034da2d&gt;] _raw_spin_lock+0x33/0x40
[ 8683.928121]        [&lt;e0fc73ec&gt;] l2tp_xmit_skb+0x173/0x47e
[l2tp_core]
[ 8683.928121]        [&lt;e0fe31fb&gt;] l2tp_eth_dev_xmit+0x1a/0x2f
[l2tp_eth]
[ 8683.928121]        [&lt;c02e01e7&gt;] dev_hard_start_xmit+0x333/0x3f2
[ 8683.928121]        [&lt;c02f064c&gt;] sch_direct_xmit+0x55/0x119
[ 8683.928121]        [&lt;c02e0528&gt;] dev_queue_xmit+0x282/0x418
[ 8683.928121]        [&lt;c031f4fb&gt;] NF_HOOK.clone.19+0x45/0x4c
[ 8683.928121]        [&lt;c031f524&gt;] arp_xmit+0x22/0x24
[ 8683.928121]        [&lt;c031f567&gt;] arp_send+0x41/0x48
[ 8683.928121]        [&lt;c031fa7d&gt;] arp_process+0x289/0x491
[ 8683.928121]        [&lt;c031f4fb&gt;] NF_HOOK.clone.19+0x45/0x4c
[ 8683.928121]        [&lt;c031f7a0&gt;] arp_rcv+0xb1/0xc3
[ 8683.928121]        [&lt;c02de91b&gt;] __netif_receive_skb+0x329/0x378
[ 8683.928121]        [&lt;c02de9d3&gt;] process_backlog+0x69/0x130
[ 8683.928121]        [&lt;c02df103&gt;] net_rx_action+0x90/0x15d
[ 8683.928121]        [&lt;c012b2b5&gt;] __do_softirq+0x7b/0x118
[ 8683.928121]
[ 8683.928121] other info that might help us debug this:
[ 8683.928121]
[ 8683.928121]  Possible unsafe locking scenario:
[ 8683.928121]
[ 8683.928121]        CPU0                    CPU1
[ 8683.928121]        ----                    ----
[ 8683.928121]   lock(_xmit_ETHER#2);
[ 8683.928121]                                lock(slock-AF_INET);
[ 8683.928121]                                lock(_xmit_ETHER#2);
[ 8683.928121]   lock(slock-AF_INET);
[ 8683.928121]
[ 8683.928121]  *** DEADLOCK ***
[ 8683.928121]
[ 8683.928121] 3 locks held by swapper/0/0:
[ 8683.928121]  #0:  (rcu_read_lock){.+.+..}, at: [&lt;c02dbc10&gt;]
rcu_lock_acquire+0x0/0x30
[ 8683.928121]  #1:  (rcu_read_lock_bh){.+....}, at: [&lt;c02dbc10&gt;]
rcu_lock_acquire+0x0/0x30
[ 8683.928121]  #2:  (_xmit_ETHER#2){+.-...}, at: [&lt;c02f062d&gt;]
sch_direct_xmit+0x36/0x119
[ 8683.928121]
[ 8683.928121] stack backtrace:
[ 8683.928121] Pid: 0, comm: swapper/0 Not tainted 3.4.1-build-0061 #14
[ 8683.928121] Call Trace:
[ 8683.928121]  [&lt;c034bdd2&gt;] ? printk+0x18/0x1a
[ 8683.928121]  [&lt;c0158904&gt;] print_circular_bug+0x1ac/0x1b6
[ 8683.928121]  [&lt;c0159f1b&gt;] __lock_acquire+0x9a3/0xc27
[ 8683.928121]  [&lt;c015a561&gt;] lock_acquire+0x71/0x85
[ 8683.928121]  [&lt;e0fc73ec&gt;] ? l2tp_xmit_skb+0x173/0x47e [l2tp_core]
[ 8683.928121]  [&lt;c034da2d&gt;] _raw_spin_lock+0x33/0x40
[ 8683.928121]  [&lt;e0fc73ec&gt;] ? l2tp_xmit_skb+0x173/0x47e [l2tp_core]
[ 8683.928121]  [&lt;e0fc73ec&gt;] l2tp_xmit_skb+0x173/0x47e [l2tp_core]
[ 8683.928121]  [&lt;e0fe31fb&gt;] l2tp_eth_dev_xmit+0x1a/0x2f [l2tp_eth]
[ 8683.928121]  [&lt;c02e01e7&gt;] dev_hard_start_xmit+0x333/0x3f2
[ 8683.928121]  [&lt;c02f064c&gt;] sch_direct_xmit+0x55/0x119
[ 8683.928121]  [&lt;c02e0528&gt;] dev_queue_xmit+0x282/0x418
[ 8683.928121]  [&lt;c02e02a6&gt;] ? dev_hard_start_xmit+0x3f2/0x3f2
[ 8683.928121]  [&lt;c031f4fb&gt;] NF_HOOK.clone.19+0x45/0x4c
[ 8683.928121]  [&lt;c031f524&gt;] arp_xmit+0x22/0x24
[ 8683.928121]  [&lt;c02e02a6&gt;] ? dev_hard_start_xmit+0x3f2/0x3f2
[ 8683.928121]  [&lt;c031f567&gt;] arp_send+0x41/0x48
[ 8683.928121]  [&lt;c031fa7d&gt;] arp_process+0x289/0x491
[ 8683.928121]  [&lt;c031f7f4&gt;] ? __neigh_lookup.clone.20+0x42/0x42
[ 8683.928121]  [&lt;c031f4fb&gt;] NF_HOOK.clone.19+0x45/0x4c
[ 8683.928121]  [&lt;c031f7a0&gt;] arp_rcv+0xb1/0xc3
[ 8683.928121]  [&lt;c031f7f4&gt;] ? __neigh_lookup.clone.20+0x42/0x42
[ 8683.928121]  [&lt;c02de91b&gt;] __netif_receive_skb+0x329/0x378
[ 8683.928121]  [&lt;c02de9d3&gt;] process_backlog+0x69/0x130
[ 8683.928121]  [&lt;c02df103&gt;] net_rx_action+0x90/0x15d
[ 8683.928121]  [&lt;c012b2b5&gt;] __do_softirq+0x7b/0x118
[ 8683.928121]  [&lt;c012b23a&gt;] ? local_bh_enable+0xd/0xd
[ 8683.928121]  &lt;IRQ&gt;  [&lt;c012b4d0&gt;] ? irq_exit+0x41/0x91
[ 8683.928121]  [&lt;c0103c6f&gt;] ? do_IRQ+0x79/0x8d
[ 8683.928121]  [&lt;c0157ea1&gt;] ? trace_hardirqs_off_caller+0x2e/0x86
[ 8683.928121]  [&lt;c034ef6e&gt;] ? common_interrupt+0x2e/0x34
[ 8683.928121]  [&lt;c0108a33&gt;] ? default_idle+0x23/0x38
[ 8683.928121]  [&lt;c01091a8&gt;] ? cpu_idle+0x55/0x6f
[ 8683.928121]  [&lt;c033df25&gt;] ? rest_init+0xa1/0xa7
[ 8683.928121]  [&lt;c033de84&gt;] ? __read_lock_failed+0x14/0x14
[ 8683.928121]  [&lt;c0498745&gt;] ? start_kernel+0x303/0x30a
[ 8683.928121]  [&lt;c0498209&gt;] ? repair_env_string+0x51/0x51
[ 8683.928121]  [&lt;c04980a8&gt;] ? i386_start_kernel+0xa8/0xaf

It appears that like most virtual devices, l2tp should be converted to
LLTX mode.

This patch takes care of statistics using atomic_long in both RX and TX
paths, and fix a bug in l2tp_eth_dev_recv(), which was caching skb-&gt;data
before a pskb_may_pull() call.

Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Reported-by: Denys Fedoryshchenko &lt;denys@visp.net.lb&gt;
Cc: James Chapman &lt;jchapman@katalix.com&gt;
Cc: Hong zhi guo &lt;honkiko@gmail.com&gt;
Cc: Francois Romieu &lt;romieu@fr.zoreil.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
</feed>
