<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/net/l2tp/l2tp_eth.c, branch v4.1-rc2</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<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.toradex.cn/cgit/linux-toradex.git/commit/?id=1cea7e2c9fb3bc6bec8589337a50f60a45085156'/>
<id>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>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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;
</pre>
</div>
</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.toradex.cn/cgit/linux-toradex.git/commit/?id=fe1591224a1c454f4344d59e11ccd44577c00508'/>
<id>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>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Alexander Couzens &lt;lynxis@fe80.eu&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</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.toradex.cn/cgit/linux-toradex.git/commit/?id=c835a677331495cf137a7f8a023463afd9f032f8'/>
<id>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>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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;
</pre>
</div>
</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.toradex.cn/cgit/linux-toradex.git/commit/?id=789336360e0a2aeb9750c16ab704a02cbe035e9e'/>
<id>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>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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;
</pre>
</div>
</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.toradex.cn/cgit/linux-toradex.git/commit/?id=b48b63a1f6e26b0dec2c9f1690396ed4bcb66903'/>
<id>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>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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;
</pre>
</div>
</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.toradex.cn/cgit/linux-toradex.git/commit/?id=23d3b8bfb8eb20e7d96afa09991e6a5ed1c83164'/>
<id>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>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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;
</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.toradex.cn/cgit/linux-toradex.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>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.toradex.cn/cgit/linux-toradex.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: 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.toradex.cn/cgit/linux-toradex.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>
<entry>
<title>net: l2tp_eth: fix l2tp_eth_dev_xmit race</title>
<updated>2012-06-25T23:30:54+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2012-06-25T00:45:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=aa214de0595eecf5079a172a16333fa638b64915'/>
<id>aa214de0595eecf5079a172a16333fa638b64915</id>
<content type='text'>
Its illegal to dereference skb after giving it to l2tp_xmit_skb()
as it might be already freed/reused.

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>
Its illegal to dereference skb after giving it to l2tp_xmit_skb()
as it might be already freed/reused.

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>
</feed>
