<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/net/openvswitch/vport-internal_dev.c, branch linux-4.19.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.</subtitle>
<id>https://universe.0xinfinity.dev/distro/kernel/atom?h=linux-4.19.y</id>
<link rel='self' href='https://universe.0xinfinity.dev/distro/kernel/atom?h=linux-4.19.y'/>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/'/>
<updated>2019-11-24T07:19:17Z</updated>
<entry>
<title>net: ovs: fix return type of ndo_start_xmit function</title>
<updated>2019-11-24T07:19:17Z</updated>
<author>
<name>YueHaibing</name>
<email>yuehaibing@huawei.com</email>
</author>
<published>2018-09-26T09:15:38Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=c234566f1ea088d82a1bb997f075848bc5a1c2de'/>
<id>urn:sha1:c234566f1ea088d82a1bb997f075848bc5a1c2de</id>
<content type='text'>
[ Upstream commit eddf11e18dff0e8671e06ce54e64cfc843303ab9 ]

The method ndo_start_xmit() is defined as returning an 'netdev_tx_t',
which is a typedef for an enum type, so make sure the implementation in
this driver has returns 'netdev_tx_t' value, and change the function
return type to netdev_tx_t.

Found by coccinelle.

Signed-off-by: YueHaibing &lt;yuehaibing@huawei.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>net: openvswitch: free vport unless register_netdevice() succeeds</title>
<updated>2019-11-12T18:20:59Z</updated>
<author>
<name>Hillf Danton</name>
<email>hdanton@sina.com</email>
</author>
<published>2019-10-21T10:01:57Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=4e80e5614770524c07b680edf70f533af308c56e'/>
<id>urn:sha1:4e80e5614770524c07b680edf70f533af308c56e</id>
<content type='text'>
[ Upstream commit 9464cc37f3671ee69cb1c00662b5e1f113a96b23 ]

syzbot found the following crash on:

HEAD commit:    1e78030e Merge tag 'mmc-v5.3-rc1' of git://git.kernel.org/..
git tree:       upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=148d3d1a600000
kernel config:  https://syzkaller.appspot.com/x/.config?x=30cef20daf3e9977
dashboard link: https://syzkaller.appspot.com/bug?extid=13210896153522fe1ee5
compiler:       gcc (GCC) 9.0.0 20181231 (experimental)
syz repro:      https://syzkaller.appspot.com/x/repro.syz?x=136aa8c4600000
C reproducer:   https://syzkaller.appspot.com/x/repro.c?x=109ba792600000

=====================================================================
BUG: memory leak
unreferenced object 0xffff8881207e4100 (size 128):
   comm "syz-executor032", pid 7014, jiffies 4294944027 (age 13.830s)
   hex dump (first 32 bytes):
     00 70 16 18 81 88 ff ff 80 af 8c 22 81 88 ff ff  .p........."....
     00 b6 23 17 81 88 ff ff 00 00 00 00 00 00 00 00  ..#.............
   backtrace:
     [&lt;000000000eb78212&gt;] kmemleak_alloc_recursive  include/linux/kmemleak.h:43 [inline]
     [&lt;000000000eb78212&gt;] slab_post_alloc_hook mm/slab.h:522 [inline]
     [&lt;000000000eb78212&gt;] slab_alloc mm/slab.c:3319 [inline]
     [&lt;000000000eb78212&gt;] kmem_cache_alloc_trace+0x145/0x2c0 mm/slab.c:3548
     [&lt;00000000006ea6c6&gt;] kmalloc include/linux/slab.h:552 [inline]
     [&lt;00000000006ea6c6&gt;] kzalloc include/linux/slab.h:748 [inline]
     [&lt;00000000006ea6c6&gt;] ovs_vport_alloc+0x37/0xf0  net/openvswitch/vport.c:130
     [&lt;00000000f9a04a7d&gt;] internal_dev_create+0x24/0x1d0  net/openvswitch/vport-internal_dev.c:164
     [&lt;0000000056ee7c13&gt;] ovs_vport_add+0x81/0x190  net/openvswitch/vport.c:199
     [&lt;000000005434efc7&gt;] new_vport+0x19/0x80 net/openvswitch/datapath.c:194
     [&lt;00000000b7b253f1&gt;] ovs_dp_cmd_new+0x22f/0x410  net/openvswitch/datapath.c:1614
     [&lt;00000000e0988518&gt;] genl_family_rcv_msg+0x2ab/0x5b0  net/netlink/genetlink.c:629
     [&lt;00000000d0cc9347&gt;] genl_rcv_msg+0x54/0x9c net/netlink/genetlink.c:654
     [&lt;000000006694b647&gt;] netlink_rcv_skb+0x61/0x170  net/netlink/af_netlink.c:2477
     [&lt;0000000088381f37&gt;] genl_rcv+0x29/0x40 net/netlink/genetlink.c:665
     [&lt;00000000dad42a47&gt;] netlink_unicast_kernel  net/netlink/af_netlink.c:1302 [inline]
     [&lt;00000000dad42a47&gt;] netlink_unicast+0x1ec/0x2d0  net/netlink/af_netlink.c:1328
     [&lt;0000000067e6b079&gt;] netlink_sendmsg+0x270/0x480  net/netlink/af_netlink.c:1917
     [&lt;00000000aab08a47&gt;] sock_sendmsg_nosec net/socket.c:637 [inline]
     [&lt;00000000aab08a47&gt;] sock_sendmsg+0x54/0x70 net/socket.c:657
     [&lt;000000004cb7c11d&gt;] ___sys_sendmsg+0x393/0x3c0 net/socket.c:2311
     [&lt;00000000c4901c63&gt;] __sys_sendmsg+0x80/0xf0 net/socket.c:2356
     [&lt;00000000c10abb2d&gt;] __do_sys_sendmsg net/socket.c:2365 [inline]
     [&lt;00000000c10abb2d&gt;] __se_sys_sendmsg net/socket.c:2363 [inline]
     [&lt;00000000c10abb2d&gt;] __x64_sys_sendmsg+0x23/0x30 net/socket.c:2363

BUG: memory leak
unreferenced object 0xffff88811723b600 (size 64):
   comm "syz-executor032", pid 7014, jiffies 4294944027 (age 13.830s)
   hex dump (first 32 bytes):
     01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00  ................
     00 00 00 00 00 00 00 00 02 00 00 00 05 35 82 c1  .............5..
   backtrace:
     [&lt;00000000352f46d8&gt;] kmemleak_alloc_recursive  include/linux/kmemleak.h:43 [inline]
     [&lt;00000000352f46d8&gt;] slab_post_alloc_hook mm/slab.h:522 [inline]
     [&lt;00000000352f46d8&gt;] slab_alloc mm/slab.c:3319 [inline]
     [&lt;00000000352f46d8&gt;] __do_kmalloc mm/slab.c:3653 [inline]
     [&lt;00000000352f46d8&gt;] __kmalloc+0x169/0x300 mm/slab.c:3664
     [&lt;000000008e48f3d1&gt;] kmalloc include/linux/slab.h:557 [inline]
     [&lt;000000008e48f3d1&gt;] ovs_vport_set_upcall_portids+0x54/0xd0  net/openvswitch/vport.c:343
     [&lt;00000000541e4f4a&gt;] ovs_vport_alloc+0x7f/0xf0  net/openvswitch/vport.c:139
     [&lt;00000000f9a04a7d&gt;] internal_dev_create+0x24/0x1d0  net/openvswitch/vport-internal_dev.c:164
     [&lt;0000000056ee7c13&gt;] ovs_vport_add+0x81/0x190  net/openvswitch/vport.c:199
     [&lt;000000005434efc7&gt;] new_vport+0x19/0x80 net/openvswitch/datapath.c:194
     [&lt;00000000b7b253f1&gt;] ovs_dp_cmd_new+0x22f/0x410  net/openvswitch/datapath.c:1614
     [&lt;00000000e0988518&gt;] genl_family_rcv_msg+0x2ab/0x5b0  net/netlink/genetlink.c:629
     [&lt;00000000d0cc9347&gt;] genl_rcv_msg+0x54/0x9c net/netlink/genetlink.c:654
     [&lt;000000006694b647&gt;] netlink_rcv_skb+0x61/0x170  net/netlink/af_netlink.c:2477
     [&lt;0000000088381f37&gt;] genl_rcv+0x29/0x40 net/netlink/genetlink.c:665
     [&lt;00000000dad42a47&gt;] netlink_unicast_kernel  net/netlink/af_netlink.c:1302 [inline]
     [&lt;00000000dad42a47&gt;] netlink_unicast+0x1ec/0x2d0  net/netlink/af_netlink.c:1328
     [&lt;0000000067e6b079&gt;] netlink_sendmsg+0x270/0x480  net/netlink/af_netlink.c:1917
     [&lt;00000000aab08a47&gt;] sock_sendmsg_nosec net/socket.c:637 [inline]
     [&lt;00000000aab08a47&gt;] sock_sendmsg+0x54/0x70 net/socket.c:657
     [&lt;000000004cb7c11d&gt;] ___sys_sendmsg+0x393/0x3c0 net/socket.c:2311
     [&lt;00000000c4901c63&gt;] __sys_sendmsg+0x80/0xf0 net/socket.c:2356

BUG: memory leak
unreferenced object 0xffff8881228ca500 (size 128):
   comm "syz-executor032", pid 7015, jiffies 4294944622 (age 7.880s)
   hex dump (first 32 bytes):
     00 f0 27 18 81 88 ff ff 80 ac 8c 22 81 88 ff ff  ..'........"....
     40 b7 23 17 81 88 ff ff 00 00 00 00 00 00 00 00  @.#.............
   backtrace:
     [&lt;000000000eb78212&gt;] kmemleak_alloc_recursive  include/linux/kmemleak.h:43 [inline]
     [&lt;000000000eb78212&gt;] slab_post_alloc_hook mm/slab.h:522 [inline]
     [&lt;000000000eb78212&gt;] slab_alloc mm/slab.c:3319 [inline]
     [&lt;000000000eb78212&gt;] kmem_cache_alloc_trace+0x145/0x2c0 mm/slab.c:3548
     [&lt;00000000006ea6c6&gt;] kmalloc include/linux/slab.h:552 [inline]
     [&lt;00000000006ea6c6&gt;] kzalloc include/linux/slab.h:748 [inline]
     [&lt;00000000006ea6c6&gt;] ovs_vport_alloc+0x37/0xf0  net/openvswitch/vport.c:130
     [&lt;00000000f9a04a7d&gt;] internal_dev_create+0x24/0x1d0  net/openvswitch/vport-internal_dev.c:164
     [&lt;0000000056ee7c13&gt;] ovs_vport_add+0x81/0x190  net/openvswitch/vport.c:199
     [&lt;000000005434efc7&gt;] new_vport+0x19/0x80 net/openvswitch/datapath.c:194
     [&lt;00000000b7b253f1&gt;] ovs_dp_cmd_new+0x22f/0x410  net/openvswitch/datapath.c:1614
     [&lt;00000000e0988518&gt;] genl_family_rcv_msg+0x2ab/0x5b0  net/netlink/genetlink.c:629
     [&lt;00000000d0cc9347&gt;] genl_rcv_msg+0x54/0x9c net/netlink/genetlink.c:654
     [&lt;000000006694b647&gt;] netlink_rcv_skb+0x61/0x170  net/netlink/af_netlink.c:2477
     [&lt;0000000088381f37&gt;] genl_rcv+0x29/0x40 net/netlink/genetlink.c:665
     [&lt;00000000dad42a47&gt;] netlink_unicast_kernel  net/netlink/af_netlink.c:1302 [inline]
     [&lt;00000000dad42a47&gt;] netlink_unicast+0x1ec/0x2d0  net/netlink/af_netlink.c:1328
     [&lt;0000000067e6b079&gt;] netlink_sendmsg+0x270/0x480  net/netlink/af_netlink.c:1917
     [&lt;00000000aab08a47&gt;] sock_sendmsg_nosec net/socket.c:637 [inline]
     [&lt;00000000aab08a47&gt;] sock_sendmsg+0x54/0x70 net/socket.c:657
     [&lt;000000004cb7c11d&gt;] ___sys_sendmsg+0x393/0x3c0 net/socket.c:2311
     [&lt;00000000c4901c63&gt;] __sys_sendmsg+0x80/0xf0 net/socket.c:2356
     [&lt;00000000c10abb2d&gt;] __do_sys_sendmsg net/socket.c:2365 [inline]
     [&lt;00000000c10abb2d&gt;] __se_sys_sendmsg net/socket.c:2363 [inline]
     [&lt;00000000c10abb2d&gt;] __x64_sys_sendmsg+0x23/0x30 net/socket.c:2363
=====================================================================

The function in net core, register_netdevice(), may fail with vport's
destruction callback either invoked or not. After commit 309b66970ee2
("net: openvswitch: do not free vport if register_netdevice() is failed."),
the duty to destroy vport is offloaded from the driver OTOH, which ends
up in the memory leak reported.

It is fixed by releasing vport unless device is registered successfully.
To do that, the callback assignment is defered until device is registered.

Reported-by: syzbot+13210896153522fe1ee5@syzkaller.appspotmail.com
Fixes: 309b66970ee2 ("net: openvswitch: do not free vport if register_netdevice() is failed.")
Cc: Taehee Yoo &lt;ap420073@gmail.com&gt;
Cc: Greg Rose &lt;gvrose8192@gmail.com&gt;
Cc: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Cc: Marcelo Ricardo Leitner &lt;marcelo.leitner@gmail.com&gt;
Cc: Ying Xue &lt;ying.xue@windriver.com&gt;
Cc: Andrey Konovalov &lt;andreyknvl@google.com&gt;
Signed-off-by: Hillf Danton &lt;hdanton@sina.com&gt;
Acked-by: Pravin B Shelar &lt;pshelar@ovn.org&gt;
[sbrivio: this was sent to dev@openvswitch.org and never made its way
 to netdev -- resending original patch]
Signed-off-by: Stefano Brivio &lt;sbrivio@redhat.com&gt;
Reviewed-by: Greg Rose &lt;gvrose8192@gmail.com&gt;
Signed-off-by: Jakub Kicinski &lt;jakub.kicinski@netronome.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>net: openvswitch: do not free vport if register_netdevice() is failed.</title>
<updated>2019-06-22T06:15:14Z</updated>
<author>
<name>Taehee Yoo</name>
<email>ap420073@gmail.com</email>
</author>
<published>2019-06-09T14:26:21Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=7530c3f3d5b9035c445885f3f52b16533654e9dc'/>
<id>urn:sha1:7530c3f3d5b9035c445885f3f52b16533654e9dc</id>
<content type='text'>
[ Upstream commit 309b66970ee2abf721ecd0876a48940fa0b99a35 ]

In order to create an internal vport, internal_dev_create() is used and
that calls register_netdevice() internally.
If register_netdevice() fails, it calls dev-&gt;priv_destructor() to free
private data of netdev. actually, a private data of this is a vport.

Hence internal_dev_create() should not free and use a vport after failure
of register_netdevice().

Test command
    ovs-dpctl add-dp bonding_masters

Splat looks like:
[ 1035.667767] kasan: GPF could be caused by NULL-ptr deref or user memory access
[ 1035.675958] general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN PTI
[ 1035.676916] CPU: 1 PID: 1028 Comm: ovs-vswitchd Tainted: G    B             5.2.0-rc3+ #240
[ 1035.676916] RIP: 0010:internal_dev_create+0x2e5/0x4e0 [openvswitch]
[ 1035.676916] Code: 48 c1 ea 03 80 3c 02 00 0f 85 9f 01 00 00 4c 8b 23 48 b8 00 00 00 00 00 fc ff df 49 8d bc 24 60 05 00 00 48 89 fa 48 c1 ea 03 &lt;80&gt; 3c 02 00 0f 85 86 01 00 00 49 8b bc 24 60 05 00 00 e8 e4 68 f4
[ 1035.713720] RSP: 0018:ffff88810dcb7578 EFLAGS: 00010206
[ 1035.713720] RAX: dffffc0000000000 RBX: ffff88810d13fe08 RCX: ffffffff84297704
[ 1035.713720] RDX: 00000000000000ac RSI: 0000000000000000 RDI: 0000000000000560
[ 1035.713720] RBP: 00000000ffffffef R08: fffffbfff0d3b881 R09: fffffbfff0d3b881
[ 1035.713720] R10: 0000000000000001 R11: fffffbfff0d3b880 R12: 0000000000000000
[ 1035.768776] R13: 0000607ee460b900 R14: ffff88810dcb7690 R15: ffff88810dcb7698
[ 1035.777709] FS:  00007f02095fc980(0000) GS:ffff88811b400000(0000) knlGS:0000000000000000
[ 1035.777709] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 1035.777709] CR2: 00007ffdf01d2f28 CR3: 0000000108258000 CR4: 00000000001006e0
[ 1035.777709] Call Trace:
[ 1035.777709]  ovs_vport_add+0x267/0x4f0 [openvswitch]
[ 1035.777709]  new_vport+0x15/0x1e0 [openvswitch]
[ 1035.777709]  ovs_vport_cmd_new+0x567/0xd10 [openvswitch]
[ 1035.777709]  ? ovs_dp_cmd_dump+0x490/0x490 [openvswitch]
[ 1035.777709]  ? __kmalloc+0x131/0x2e0
[ 1035.777709]  ? genl_family_rcv_msg+0xa54/0x1030
[ 1035.777709]  genl_family_rcv_msg+0x63a/0x1030
[ 1035.777709]  ? genl_unregister_family+0x630/0x630
[ 1035.841681]  ? debug_show_all_locks+0x2d0/0x2d0
[ ... ]

Fixes: cf124db566e6 ("net: Fix inconsistent teardown and release of private netdev state.")
Signed-off-by: Taehee Yoo &lt;ap420073@gmail.com&gt;
Reviewed-by: Greg Rose &lt;gvrose8192@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>net: ovs: remove unused hardirq.h</title>
<updated>2018-01-09T01:59:25Z</updated>
<author>
<name>Yang Shi</name>
<email>yang.s@alibaba-inc.com</email>
</author>
<published>2018-01-08T19:52:53Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=419091f1cc8afce943fd12af0df26201ee20c1c0'/>
<id>urn:sha1:419091f1cc8afce943fd12af0df26201ee20c1c0</id>
<content type='text'>
Preempt counter APIs have been split out, currently, hardirq.h just
includes irq_enter/exit APIs which are not used by openvswitch at all.

So, remove the unused hardirq.h.

Signed-off-by: Yang Shi &lt;yang.s@alibaba-inc.com&gt;
Acked-by: Pravin B Shelar &lt;pshelar@ovn.org&gt;
Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Cc: dev@openvswitch.org
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>openvswitch: do not propagate headroom updates to internal port</title>
<updated>2017-12-03T02:14:59Z</updated>
<author>
<name>Paolo Abeni</name>
<email>pabeni@redhat.com</email>
</author>
<published>2017-11-30T14:35:33Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=183dea5818315c0a172d21ecbcd2554894bf01e3'/>
<id>urn:sha1:183dea5818315c0a172d21ecbcd2554894bf01e3</id>
<content type='text'>
After commit 3a927bc7cf9d ("ovs: propagate per dp max headroom to
all vports") the need_headroom for the internal vport is updated
accordingly to the max needed headroom in its datapath.

That avoids the pskb_expand_head() costs when sending/forwarding
packets towards tunnel devices, at least for some scenarios.

We still require such copy when using the ovs-preferred configuration
for vxlan tunnels:

    br_int
  /       \
tap      vxlan
           (remote_ip:X)

br_phy
     \
    NIC

where the route towards the IP 'X' is via 'br_phy'.

When forwarding traffic from the tap towards the vxlan device, we
will call pskb_expand_head() in vxlan_build_skb() because
br-phy-&gt;needed_headroom is equal to tun-&gt;needed_headroom.

With this change we avoid updating the internal vport needed_headroom,
so that in the above scenario no head copy is needed, giving 5%
performance improvement in UDP throughput test.

As a trade-off, packets sent from the internal port towards a tunnel
device will now experience the head copy overhead. The rationale is
that the latter use-case is less relevant performance-wise.

Signed-off-by: Paolo Abeni &lt;pabeni@redhat.com&gt;
Acked-by: Pravin B Shelar &lt;pshelar@ovn.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: Fix inconsistent teardown and release of private netdev state.</title>
<updated>2017-06-07T19:53:24Z</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2017-05-08T16:52:56Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=cf124db566e6b036b8bcbe8decbed740bdfac8c6'/>
<id>urn:sha1:cf124db566e6b036b8bcbe8decbed740bdfac8c6</id>
<content type='text'>
Network devices can allocate reasources and private memory using
netdev_ops-&gt;ndo_init().  However, the release of these resources
can occur in one of two different places.

Either netdev_ops-&gt;ndo_uninit() or netdev-&gt;destructor().

The decision of which operation frees the resources depends upon
whether it is necessary for all netdev refs to be released before it
is safe to perform the freeing.

netdev_ops-&gt;ndo_uninit() presumably can occur right after the
NETDEV_UNREGISTER notifier completes and the unicast and multicast
address lists are flushed.

netdev-&gt;destructor(), on the other hand, does not run until the
netdev references all go away.

Further complicating the situation is that netdev-&gt;destructor()
almost universally does also a free_netdev().

This creates a problem for the logic in register_netdevice().
Because all callers of register_netdevice() manage the freeing
of the netdev, and invoke free_netdev(dev) if register_netdevice()
fails.

If netdev_ops-&gt;ndo_init() succeeds, but something else fails inside
of register_netdevice(), it does call ndo_ops-&gt;ndo_uninit().  But
it is not able to invoke netdev-&gt;destructor().

This is because netdev-&gt;destructor() will do a free_netdev() and
then the caller of register_netdevice() will do the same.

However, this means that the resources that would normally be released
by netdev-&gt;destructor() will not be.

Over the years drivers have added local hacks to deal with this, by
invoking their destructor parts by hand when register_netdevice()
fails.

Many drivers do not try to deal with this, and instead we have leaks.

Let's close this hole by formalizing the distinction between what
private things need to be freed up by netdev-&gt;destructor() and whether
the driver needs unregister_netdevice() to perform the free_netdev().

netdev-&gt;priv_destructor() performs all actions to free up the private
resources that used to be freed by netdev-&gt;destructor(), except for
free_netdev().

netdev-&gt;needs_free_netdev is a boolean that indicates whether
free_netdev() should be done at the end of unregister_netdevice().

Now, register_netdevice() can sanely release all resources after
ndo_ops-&gt;ndo_init() succeeds, by invoking both ndo_ops-&gt;ndo_uninit()
and netdev-&gt;priv_destructor().

And at the end of unregister_netdevice(), we invoke
netdev-&gt;priv_destructor() and optionally call free_netdev().

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>openvswitch: Set internal device max mtu to ETH_MAX_MTU.</title>
<updated>2017-02-15T17:40:27Z</updated>
<author>
<name>Jarno Rajahalme</name>
<email>jarno@ovn.org</email>
</author>
<published>2017-02-15T05:16:28Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=425df17ce3a26d98f76e2b6b0af2acf4aeb0b026'/>
<id>urn:sha1:425df17ce3a26d98f76e2b6b0af2acf4aeb0b026</id>
<content type='text'>
Commit 91572088e3fd ("net: use core MTU range checking in core net
infra") changed the openvswitch internal device to use the core net
infra for controlling the MTU range, but failed to actually set the
max_mtu as described in the commit message, which now defaults to
ETH_DATA_LEN.

This patch fixes this by setting max_mtu to ETH_MAX_MTU after
ether_setup() call.

Fixes: 91572088e3fd ("net: use core MTU range checking in core net infra")
Signed-off-by: Jarno Rajahalme &lt;jarno@ovn.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: make ndo_get_stats64 a void function</title>
<updated>2017-01-08T22:51:44Z</updated>
<author>
<name>stephen hemminger</name>
<email>stephen@networkplumber.org</email>
</author>
<published>2017-01-07T03:12:52Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=bc1f44709cf27fb2a5766cadafe7e2ad5e9cb221'/>
<id>urn:sha1:bc1f44709cf27fb2a5766cadafe7e2ad5e9cb221</id>
<content type='text'>
The network device operation for reading statistics is only called
in one place, and it ignores the return value. Having a structure
return value is potentially confusing because some future driver could
incorrectly assume that the return value was used.

Fix all drivers with ndo_get_stats64 to have a void function.

Signed-off-by: Stephen Hemminger &lt;sthemmin@microsoft.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: use core MTU range checking in core net infra</title>
<updated>2016-10-20T18:51:09Z</updated>
<author>
<name>Jarod Wilson</name>
<email>jarod@redhat.com</email>
</author>
<published>2016-10-20T17:55:20Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=91572088e3fdbf4fe31cf397926d8b890fdb3237'/>
<id>urn:sha1:91572088e3fdbf4fe31cf397926d8b890fdb3237</id>
<content type='text'>
geneve:
- Merge __geneve_change_mtu back into geneve_change_mtu, set max_mtu
- This one isn't quite as straight-forward as others, could use some
  closer inspection and testing

macvlan:
- set min/max_mtu

tun:
- set min/max_mtu, remove tun_net_change_mtu

vxlan:
- Merge __vxlan_change_mtu back into vxlan_change_mtu
- Set max_mtu to IP_MAX_MTU and retain dynamic MTU range checks in
  change_mtu function
- This one is also not as straight-forward and could use closer inspection
  and testing from vxlan folks

bridge:
- set max_mtu of IP_MAX_MTU and retain dynamic MTU range checks in
  change_mtu function

openvswitch:
- set min/max_mtu, remove internal_dev_change_mtu
- note: max_mtu wasn't checked previously, it's been set to 65535, which
  is the largest possible size supported

sch_teql:
- set min/max_mtu (note: max_mtu previously unchecked, used max of 65535)

macsec:
- min_mtu = 0, max_mtu = 65535

macvlan:
- min_mtu = 0, max_mtu = 65535

ntb_netdev:
- min_mtu = 0, max_mtu = 65535

veth:
- min_mtu = 68, max_mtu = 65535

8021q:
- min_mtu = 0, max_mtu = 65535

CC: netdev@vger.kernel.org
CC: Nicolas Dichtel &lt;nicolas.dichtel@6wind.com&gt;
CC: Hannes Frederic Sowa &lt;hannes@stressinduktion.org&gt;
CC: Tom Herbert &lt;tom@herbertland.com&gt;
CC: Daniel Borkmann &lt;daniel@iogearbox.net&gt;
CC: Alexander Duyck &lt;alexander.h.duyck@intel.com&gt;
CC: Paolo Abeni &lt;pabeni@redhat.com&gt;
CC: Jiri Benc &lt;jbenc@redhat.com&gt;
CC: WANG Cong &lt;xiyou.wangcong@gmail.com&gt;
CC: Roopa Prabhu &lt;roopa@cumulusnetworks.com&gt;
CC: Pravin B Shelar &lt;pshelar@ovn.org&gt;
CC: Sabrina Dubroca &lt;sd@queasysnail.net&gt;
CC: Patrick McHardy &lt;kaber@trash.net&gt;
CC: Stephen Hemminger &lt;stephen@networkplumber.org&gt;
CC: Pravin Shelar &lt;pshelar@nicira.com&gt;
CC: Maxim Krasnyansky &lt;maxk@qti.qualcomm.com&gt;
Signed-off-by: Jarod Wilson &lt;jarod@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>openvswitch: add NETIF_F_HW_VLAN_STAG_TX to internal dev</title>
<updated>2016-10-13T14:03:23Z</updated>
<author>
<name>Jiri Benc</name>
<email>jbenc@redhat.com</email>
</author>
<published>2016-10-10T15:02:44Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=3145c037e74926dea9241a3f68ada6f294b0119a'/>
<id>urn:sha1:3145c037e74926dea9241a3f68ada6f294b0119a</id>
<content type='text'>
The internal device does support 802.1AD offloading since 018c1dda5ff1
("openvswitch: 802.1AD Flow handling, actions, vlan parsing, netlink
attributes").

Signed-off-by: Jiri Benc &lt;jbenc@redhat.com&gt;
Acked-by: Pravin B Shelar &lt;pshelar@ovn.org&gt;
Acked-by: Eric Garver &lt;e@erig.me&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
