<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/net/l2tp/l2tp_eth.c, branch linux-4.7.y</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=linux-4.7.y</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=linux-4.7.y'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2015-09-25T19:27:22+00:00</updated>
<entry>
<title>l2tp: auto load type modules</title>
<updated>2015-09-25T19:27:22+00:00</updated>
<author>
<name>stephen hemminger</name>
<email>stephen@networkplumber.org</email>
</author>
<published>2015-09-24T04:33:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=f1f39f91102733bcde2462c6a138f636ee541ea8'/>
<id>urn:sha1:f1f39f91102733bcde2462c6a138f636ee541ea8</id>
<content type='text'>
It should not be necessary to do explicit module loading when
configuring L2TP. Modules should be loaded as needed instead
(as is done already with netlink and other tunnel types).

This patch adds a new module alias type and code to load
the sub module on demand.

Signed-off-by: Stephen Hemminger &lt;stephen@networkplumber.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>l2tp: Use eth_&lt;foo&gt;_addr instead of memset</title>
<updated>2015-03-03T22:01:38+00:00</updated>
<author>
<name>Joe Perches</name>
<email>joe@perches.com</email>
</author>
<published>2015-03-03T03:54:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=1cea7e2c9fb3bc6bec8589337a50f60a45085156'/>
<id>urn:sha1:1cea7e2c9fb3bc6bec8589337a50f60a45085156</id>
<content type='text'>
Use the built-in function instead of memset.

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_eth: allow to set a specific mac address</title>
<updated>2014-11-21T19:16:38+00:00</updated>
<author>
<name>Alexander Couzens</name>
<email>lynxis@fe80.eu</email>
</author>
<published>2014-11-19T12:24:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=fe1591224a1c454f4344d59e11ccd44577c00508'/>
<id>urn:sha1:fe1591224a1c454f4344d59e11ccd44577c00508</id>
<content type='text'>
Signed-off-by: Alexander Couzens &lt;lynxis@fe80.eu&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: set name_assign_type in alloc_netdev()</title>
<updated>2014-07-15T23:12:48+00:00</updated>
<author>
<name>Tom Gundersen</name>
<email>teg@jklm.no</email>
</author>
<published>2014-07-14T14:37:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=c835a677331495cf137a7f8a023463afd9f032f8'/>
<id>urn:sha1:c835a677331495cf137a7f8a023463afd9f032f8</id>
<content type='text'>
Extend alloc_netdev{,_mq{,s}}() to take name_assign_type as argument, and convert
all users to pass NET_NAME_UNKNOWN.

Coccinelle patch:

@@
expression sizeof_priv, name, setup, txqs, rxqs, count;
@@

(
-alloc_netdev_mqs(sizeof_priv, name, setup, txqs, rxqs)
+alloc_netdev_mqs(sizeof_priv, name, NET_NAME_UNKNOWN, setup, txqs, rxqs)
|
-alloc_netdev_mq(sizeof_priv, name, setup, count)
+alloc_netdev_mq(sizeof_priv, name, NET_NAME_UNKNOWN, setup, count)
|
-alloc_netdev(sizeof_priv, name, setup)
+alloc_netdev(sizeof_priv, name, NET_NAME_UNKNOWN, setup)
)

v9: move comments here from the wrong commit

Signed-off-by: Tom Gundersen &lt;teg@jklm.no&gt;
Reviewed-by: David Herrmann &lt;dh.herrmann@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>l2tp: fix oops in l2tp_eth_create() error path</title>
<updated>2012-11-03T01:56:35+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.radix-linux.su/kernel/linux.git/commit/?id=789336360e0a2aeb9750c16ab704a02cbe035e9e'/>
<id>urn:sha1:789336360e0a2aeb9750c16ab704a02cbe035e9e</id>
<content type='text'>
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;
</content>
</entry>
<entry>
<title>Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net</title>
<updated>2012-09-15T15:43:53+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2012-09-15T15:43:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=b48b63a1f6e26b0dec2c9f1690396ed4bcb66903'/>
<id>urn:sha1:b48b63a1f6e26b0dec2c9f1690396ed4bcb66903</id>
<content type='text'>
Conflicts:
	net/netfilter/nfnetlink_log.c
	net/netfilter/xt_LOG.c

Rather easy conflict resolution, the 'net' tree had bug fixes to make
sure we checked if a socket is a time-wait one or not and elide the
logging code if so.

Whereas on the 'net-next' side we are calculating the UID and GID from
the creds using different interfaces due to the user namespace changes
from Eric Biederman.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: qdisc busylock needs lockdep annotations</title>
<updated>2012-09-05T21:49:27+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2012-09-05T01:02:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=23d3b8bfb8eb20e7d96afa09991e6a5ed1c83164'/>
<id>urn:sha1:23d3b8bfb8eb20e7d96afa09991e6a5ed1c83164</id>
<content type='text'>
It seems we need to provide ability for stacked devices
to use specific lock_class_key for sch-&gt;busylock

We could instead default l2tpeth tx_queue_len to 0 (no qdisc), but
a user might use a qdisc anyway.

(So same fixes are probably needed on non LLTX stacked drivers)

Noticed while stressing L2TPV3 setup :

======================================================
 [ INFO: possible circular locking dependency detected ]
 3.6.0-rc3+ #788 Not tainted
 -------------------------------------------------------
 netperf/4660 is trying to acquire lock:
  (l2tpsock){+.-...}, at: [&lt;ffffffffa0208db2&gt;] l2tp_xmit_skb+0x172/0xa50 [l2tp_core]

 but task is already holding lock:
  (&amp;(&amp;sch-&gt;busylock)-&gt;rlock){+.-...}, at: [&lt;ffffffff81596595&gt;] dev_queue_xmit+0xd75/0xe00

 which lock already depends on the new lock.

 the existing dependency chain (in reverse order) is:

 -&gt; #1 (&amp;(&amp;sch-&gt;busylock)-&gt;rlock){+.-...}:
        [&lt;ffffffff810a5df0&gt;] lock_acquire+0x90/0x200
        [&lt;ffffffff817499fc&gt;] _raw_spin_lock_irqsave+0x4c/0x60
        [&lt;ffffffff81074872&gt;] __wake_up+0x32/0x70
        [&lt;ffffffff8136d39e&gt;] tty_wakeup+0x3e/0x80
        [&lt;ffffffff81378fb3&gt;] pty_write+0x73/0x80
        [&lt;ffffffff8136cb4c&gt;] tty_put_char+0x3c/0x40
        [&lt;ffffffff813722b2&gt;] process_echoes+0x142/0x330
        [&lt;ffffffff813742ab&gt;] n_tty_receive_buf+0x8fb/0x1230
        [&lt;ffffffff813777b2&gt;] flush_to_ldisc+0x142/0x1c0
        [&lt;ffffffff81062818&gt;] process_one_work+0x198/0x760
        [&lt;ffffffff81063236&gt;] worker_thread+0x186/0x4b0
        [&lt;ffffffff810694d3&gt;] kthread+0x93/0xa0
        [&lt;ffffffff81753e24&gt;] kernel_thread_helper+0x4/0x10

 -&gt; #0 (l2tpsock){+.-...}:
        [&lt;ffffffff810a5288&gt;] __lock_acquire+0x1628/0x1b10
        [&lt;ffffffff810a5df0&gt;] lock_acquire+0x90/0x200
        [&lt;ffffffff817498c1&gt;] _raw_spin_lock+0x41/0x50
        [&lt;ffffffffa0208db2&gt;] l2tp_xmit_skb+0x172/0xa50 [l2tp_core]
        [&lt;ffffffffa021a802&gt;] l2tp_eth_dev_xmit+0x32/0x60 [l2tp_eth]
        [&lt;ffffffff815952b2&gt;] dev_hard_start_xmit+0x502/0xa70
        [&lt;ffffffff815b63ce&gt;] sch_direct_xmit+0xfe/0x290
        [&lt;ffffffff81595a05&gt;] dev_queue_xmit+0x1e5/0xe00
        [&lt;ffffffff815d9d60&gt;] ip_finish_output+0x3d0/0x890
        [&lt;ffffffff815db019&gt;] ip_output+0x59/0xf0
        [&lt;ffffffff815da36d&gt;] ip_local_out+0x2d/0xa0
        [&lt;ffffffff815da5a3&gt;] ip_queue_xmit+0x1c3/0x680
        [&lt;ffffffff815f4192&gt;] tcp_transmit_skb+0x402/0xa60
        [&lt;ffffffff815f4a94&gt;] tcp_write_xmit+0x1f4/0xa30
        [&lt;ffffffff815f5300&gt;] tcp_push_one+0x30/0x40
        [&lt;ffffffff815e6672&gt;] tcp_sendmsg+0xe82/0x1040
        [&lt;ffffffff81614495&gt;] inet_sendmsg+0x125/0x230
        [&lt;ffffffff81576cdc&gt;] sock_sendmsg+0xdc/0xf0
        [&lt;ffffffff81579ece&gt;] sys_sendto+0xfe/0x130
        [&lt;ffffffff81752c92&gt;] system_call_fastpath+0x16/0x1b
  Possible unsafe locking scenario:

        CPU0                    CPU1
        ----                    ----
   lock(&amp;(&amp;sch-&gt;busylock)-&gt;rlock);
                                lock(l2tpsock);
                                lock(&amp;(&amp;sch-&gt;busylock)-&gt;rlock);
   lock(l2tpsock);

  *** DEADLOCK ***

 5 locks held by netperf/4660:
  #0:  (sk_lock-AF_INET){+.+.+.}, at: [&lt;ffffffff815e581c&gt;] tcp_sendmsg+0x2c/0x1040
  #1:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffff815da3e0&gt;] ip_queue_xmit+0x0/0x680
  #2:  (rcu_read_lock_bh){.+....}, at: [&lt;ffffffff815d9ac5&gt;] ip_finish_output+0x135/0x890
  #3:  (rcu_read_lock_bh){.+....}, at: [&lt;ffffffff81595820&gt;] dev_queue_xmit+0x0/0xe00
  #4:  (&amp;(&amp;sch-&gt;busylock)-&gt;rlock){+.-...}, at: [&lt;ffffffff81596595&gt;] dev_queue_xmit+0xd75/0xe00

 stack backtrace:
 Pid: 4660, comm: netperf Not tainted 3.6.0-rc3+ #788
 Call Trace:
  [&lt;ffffffff8173dbf8&gt;] print_circular_bug+0x1fb/0x20c
  [&lt;ffffffff810a5288&gt;] __lock_acquire+0x1628/0x1b10
  [&lt;ffffffff810a334b&gt;] ? check_usage+0x9b/0x4d0
  [&lt;ffffffff810a3f44&gt;] ? __lock_acquire+0x2e4/0x1b10
  [&lt;ffffffff810a5df0&gt;] lock_acquire+0x90/0x200
  [&lt;ffffffffa0208db2&gt;] ? l2tp_xmit_skb+0x172/0xa50 [l2tp_core]
  [&lt;ffffffff817498c1&gt;] _raw_spin_lock+0x41/0x50
  [&lt;ffffffffa0208db2&gt;] ? l2tp_xmit_skb+0x172/0xa50 [l2tp_core]
  [&lt;ffffffffa0208db2&gt;] l2tp_xmit_skb+0x172/0xa50 [l2tp_core]
  [&lt;ffffffffa021a802&gt;] l2tp_eth_dev_xmit+0x32/0x60 [l2tp_eth]
  [&lt;ffffffff815952b2&gt;] dev_hard_start_xmit+0x502/0xa70
  [&lt;ffffffff81594e0e&gt;] ? dev_hard_start_xmit+0x5e/0xa70
  [&lt;ffffffff81595961&gt;] ? dev_queue_xmit+0x141/0xe00
  [&lt;ffffffff815b63ce&gt;] sch_direct_xmit+0xfe/0x290
  [&lt;ffffffff81595a05&gt;] dev_queue_xmit+0x1e5/0xe00
  [&lt;ffffffff81595820&gt;] ? dev_hard_start_xmit+0xa70/0xa70
  [&lt;ffffffff815d9d60&gt;] ip_finish_output+0x3d0/0x890
  [&lt;ffffffff815d9ac5&gt;] ? ip_finish_output+0x135/0x890
  [&lt;ffffffff815db019&gt;] ip_output+0x59/0xf0
  [&lt;ffffffff815da36d&gt;] ip_local_out+0x2d/0xa0
  [&lt;ffffffff815da5a3&gt;] ip_queue_xmit+0x1c3/0x680
  [&lt;ffffffff815da3e0&gt;] ? ip_local_out+0xa0/0xa0
  [&lt;ffffffff815f4192&gt;] tcp_transmit_skb+0x402/0xa60
  [&lt;ffffffff815fa25e&gt;] ? tcp_md5_do_lookup+0x18e/0x1a0
  [&lt;ffffffff815f4a94&gt;] tcp_write_xmit+0x1f4/0xa30
  [&lt;ffffffff815f5300&gt;] tcp_push_one+0x30/0x40
  [&lt;ffffffff815e6672&gt;] tcp_sendmsg+0xe82/0x1040
  [&lt;ffffffff81614495&gt;] inet_sendmsg+0x125/0x230
  [&lt;ffffffff81614370&gt;] ? inet_create+0x6b0/0x6b0
  [&lt;ffffffff8157e6e2&gt;] ? sock_update_classid+0xc2/0x3b0
  [&lt;ffffffff8157e750&gt;] ? sock_update_classid+0x130/0x3b0
  [&lt;ffffffff81576cdc&gt;] sock_sendmsg+0xdc/0xf0
  [&lt;ffffffff81162579&gt;] ? fget_light+0x3f9/0x4f0
  [&lt;ffffffff81579ece&gt;] sys_sendto+0xfe/0x130
  [&lt;ffffffff810a69ad&gt;] ? trace_hardirqs_on+0xd/0x10
  [&lt;ffffffff8174a0b0&gt;] ? _raw_spin_unlock_irq+0x30/0x50
  [&lt;ffffffff810757e3&gt;] ? finish_task_switch+0x83/0xf0
  [&lt;ffffffff810757a6&gt;] ? finish_task_switch+0x46/0xf0
  [&lt;ffffffff81752cb7&gt;] ? sysret_check+0x1b/0x56
  [&lt;ffffffff81752c92&gt;] system_call_fastpath+0x16/0x1b

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>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.radix-linux.su/kernel/linux.git/commit/?id=c0cc88a7627c333de50b07b7c60b1d49d9d2e6cc'/>
<id>urn:sha1: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>
</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.radix-linux.su/kernel/linux.git/commit/?id=b8c8430726e5bd552e01dacc5a44f3f83f7446ca'/>
<id>urn:sha1: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>
</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.radix-linux.su/kernel/linux.git/commit/?id=a2842a1e66329798d66563b52faec1a299ec4f73'/>
<id>urn:sha1: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>
</entry>
</feed>
