<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/net/openvswitch/vport-internal_dev.c, branch linux-6.11.y</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>openvswitch: Remove generic .ndo_get_stats64</title>
<updated>2024-06-04T14:06:37+00:00</updated>
<author>
<name>Breno Leitao</name>
<email>leitao@debian.org</email>
</author>
<published>2024-05-31T11:15:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=2b438c5774cc491a4aa8bb1ec4f49c1a0760a173'/>
<id>2b438c5774cc491a4aa8bb1ec4f49c1a0760a173</id>
<content type='text'>
Commit 3e2f544dd8a33 ("net: get stats64 if device if driver is
configured") moved the callback to dev_get_tstats64() to net core, so,
unless the driver is doing some custom stats collection, it does not
need to set .ndo_get_stats64.

Since this driver is now relying in NETDEV_PCPU_STAT_TSTATS, then, it
doesn't need to set the dev_get_tstats64() generic .ndo_get_stats64
function pointer.

Signed-off-by: Breno Leitao &lt;leitao@debian.org&gt;
Reviewed-by: Subbaraya Sundeep &lt;sbhatta@marvell.com&gt;
Link: https://lore.kernel.org/r/20240531111552.3209198-2-leitao@debian.org
Signed-off-by: Paolo Abeni &lt;pabeni@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Commit 3e2f544dd8a33 ("net: get stats64 if device if driver is
configured") moved the callback to dev_get_tstats64() to net core, so,
unless the driver is doing some custom stats collection, it does not
need to set .ndo_get_stats64.

Since this driver is now relying in NETDEV_PCPU_STAT_TSTATS, then, it
doesn't need to set the dev_get_tstats64() generic .ndo_get_stats64
function pointer.

Signed-off-by: Breno Leitao &lt;leitao@debian.org&gt;
Reviewed-by: Subbaraya Sundeep &lt;sbhatta@marvell.com&gt;
Link: https://lore.kernel.org/r/20240531111552.3209198-2-leitao@debian.org
Signed-off-by: Paolo Abeni &lt;pabeni@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>openvswitch: Move stats allocation to core</title>
<updated>2024-06-04T14:06:37+00:00</updated>
<author>
<name>Breno Leitao</name>
<email>leitao@debian.org</email>
</author>
<published>2024-05-31T11:15:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=8c3fdff2171c834df5fa5ff353b94ada2e5376ca'/>
<id>8c3fdff2171c834df5fa5ff353b94ada2e5376ca</id>
<content type='text'>
With commit 34d21de99cea9 ("net: Move {l,t,d}stats allocation to core and
convert veth &amp; vrf"), stats allocation could be done on net core instead
of this driver.

With this new approach, the driver doesn't have to bother with error
handling (allocation failure checking, making sure free happens in the
right spot, etc). This is core responsibility now.

Move openvswitch driver to leverage the core allocation.

Signed-off-by: Breno Leitao &lt;leitao@debian.org&gt;
Link: https://lore.kernel.org/r/20240531111552.3209198-1-leitao@debian.org
Signed-off-by: Paolo Abeni &lt;pabeni@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With commit 34d21de99cea9 ("net: Move {l,t,d}stats allocation to core and
convert veth &amp; vrf"), stats allocation could be done on net core instead
of this driver.

With this new approach, the driver doesn't have to bother with error
handling (allocation failure checking, making sure free happens in the
right spot, etc). This is core responsibility now.

Move openvswitch driver to leverage the core allocation.

Signed-off-by: Breno Leitao &lt;leitao@debian.org&gt;
Link: https://lore.kernel.org/r/20240531111552.3209198-1-leitao@debian.org
Signed-off-by: Paolo Abeni &lt;pabeni@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>openvswitch: Change the return type for vport_ops.send function hook to int</title>
<updated>2022-09-20T01:28:50+00:00</updated>
<author>
<name>Nathan Huckleberry</name>
<email>nhuck@google.com</email>
</author>
<published>2022-09-13T23:07:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=8bb7c4f8c9276eb61f7f39cc107f67a0e81de610'/>
<id>8bb7c4f8c9276eb61f7f39cc107f67a0e81de610</id>
<content type='text'>
All usages of the vport_ops struct have the .send field set to
dev_queue_xmit or internal_dev_recv.  Since most usages are set to
dev_queue_xmit, the function hook should match the signature of
dev_queue_xmit.

The only call to vport_ops-&gt;send() is in net/openvswitch/vport.c and it
throws away the return value.

This mismatched return type breaks forward edge kCFI since the underlying
function definition does not match the function hook definition.

Reported-by: Dan Carpenter &lt;error27@gmail.com&gt;
Link: https://github.com/ClangBuiltLinux/linux/issues/1703
Cc: llvm@lists.linux.dev
Signed-off-by: Nathan Huckleberry &lt;nhuck@google.com&gt;
Reviewed-by: Nathan Chancellor &lt;nathan@kernel.org&gt;
Acked-by: Eelco Chaudron &lt;echaudro@redhat.com&gt;
Link: https://lore.kernel.org/r/20220913230739.228313-1-nhuck@google.com
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
All usages of the vport_ops struct have the .send field set to
dev_queue_xmit or internal_dev_recv.  Since most usages are set to
dev_queue_xmit, the function hook should match the signature of
dev_queue_xmit.

The only call to vport_ops-&gt;send() is in net/openvswitch/vport.c and it
throws away the return value.

This mismatched return type breaks forward edge kCFI since the underlying
function definition does not match the function hook definition.

Reported-by: Dan Carpenter &lt;error27@gmail.com&gt;
Link: https://github.com/ClangBuiltLinux/linux/issues/1703
Cc: llvm@lists.linux.dev
Signed-off-by: Nathan Huckleberry &lt;nhuck@google.com&gt;
Reviewed-by: Nathan Chancellor &lt;nathan@kernel.org&gt;
Acked-by: Eelco Chaudron &lt;echaudro@redhat.com&gt;
Link: https://lore.kernel.org/r/20220913230739.228313-1-nhuck@google.com
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>openvswitch: allow specifying ifindex of new interfaces</title>
<updated>2022-08-27T02:31:20+00:00</updated>
<author>
<name>Andrey Zhadchenko</name>
<email>andrey.zhadchenko@virtuozzo.com</email>
</author>
<published>2022-08-25T02:04:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=54c4ef34c4b6f9720fded620e2893894f9f2c554'/>
<id>54c4ef34c4b6f9720fded620e2893894f9f2c554</id>
<content type='text'>
CRIU is preserving ifindexes of net devices after restoration. However,
current Open vSwitch API does not allow to target ifindex, so we cannot
correctly restore OVS configuration.

Add new OVS_DP_ATTR_IFINDEX for OVS_DP_CMD_NEW and use it as desired
ifindex.
Use OVS_VPORT_ATTR_IFINDEX during OVS_VPORT_CMD_NEW to specify new netdev
ifindex.

Signed-off-by: Andrey Zhadchenko &lt;andrey.zhadchenko@virtuozzo.com&gt;
Acked-by: Christian Brauner (Microsoft) &lt;brauner@kernel.org&gt;
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
CRIU is preserving ifindexes of net devices after restoration. However,
current Open vSwitch API does not allow to target ifindex, so we cannot
correctly restore OVS configuration.

Add new OVS_DP_ATTR_IFINDEX for OVS_DP_CMD_NEW and use it as desired
ifindex.
Use OVS_VPORT_ATTR_IFINDEX during OVS_VPORT_CMD_NEW to specify new netdev
ifindex.

Signed-off-by: Andrey Zhadchenko &lt;andrey.zhadchenko@virtuozzo.com&gt;
Acked-by: Christian Brauner (Microsoft) &lt;brauner@kernel.org&gt;
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>openvswitch: move from strlcpy with unused retval to strscpy</title>
<updated>2022-08-23T01:07:12+00:00</updated>
<author>
<name>Wolfram Sang</name>
<email>wsa+renesas@sang-engineering.com</email>
</author>
<published>2022-08-18T21:02:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=19d1c0465ab725f96a6a31bb062481e1fb3d3950'/>
<id>19d1c0465ab725f96a6a31bb062481e1fb3d3950</id>
<content type='text'>
Follow the advice of the below link and prefer 'strscpy' in this
subsystem. Conversion is 1:1 because the return value is not used.
Generated by a coccinelle script.

Link: https://lore.kernel.org/r/CAHk-=wgfRnXz0W3D37d01q3JFkr_i_uTL=V6A6G1oUZcprmknw@mail.gmail.com/
Signed-off-by: Wolfram Sang &lt;wsa+renesas@sang-engineering.com&gt;
Link: https://lore.kernel.org/r/20220818210226.8587-1-wsa+renesas@sang-engineering.com
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Follow the advice of the below link and prefer 'strscpy' in this
subsystem. Conversion is 1:1 because the return value is not used.
Generated by a coccinelle script.

Link: https://lore.kernel.org/r/CAHk-=wgfRnXz0W3D37d01q3JFkr_i_uTL=V6A6G1oUZcprmknw@mail.gmail.com/
Signed-off-by: Wolfram Sang &lt;wsa+renesas@sang-engineering.com&gt;
Link: https://lore.kernel.org/r/20220818210226.8587-1-wsa+renesas@sang-engineering.com
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: openvswitch: use core API to update/provide stats</title>
<updated>2020-11-15T00:59:32+00:00</updated>
<author>
<name>Lev Stipakov</name>
<email>lstipakov@gmail.com</email>
</author>
<published>2020-11-13T21:53:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=865e6ae02dd77e11989cc1ec3fb5987112871dd5'/>
<id>865e6ae02dd77e11989cc1ec3fb5987112871dd5</id>
<content type='text'>
Commit d3fd65484c781 ("net: core: add dev_sw_netstats_tx_add") has added
function "dev_sw_netstats_tx_add()" to update net device per-cpu TX
stats.

Use this function instead of own code.

While on it, remove internal_get_stats() and replace it
with dev_get_tstats64().

Signed-off-by: Lev Stipakov &lt;lev@openvpn.net&gt;
Reviewed-by: Heiner Kallweit &lt;hkallweit1@gmail.com&gt;
Link: https://lore.kernel.org/r/20201113215336.145998-1-lev@openvpn.net
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Commit d3fd65484c781 ("net: core: add dev_sw_netstats_tx_add") has added
function "dev_sw_netstats_tx_add()" to update net device per-cpu TX
stats.

Use this function instead of own code.

While on it, remove internal_get_stats() and replace it
with dev_get_tstats64().

Signed-off-by: Lev Stipakov &lt;lev@openvpn.net&gt;
Reviewed-by: Heiner Kallweit &lt;hkallweit1@gmail.com&gt;
Link: https://lore.kernel.org/r/20201113215336.145998-1-lev@openvpn.net
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: openvswitch: use new function dev_fetch_sw_netstats</title>
<updated>2020-10-14T00:33:49+00:00</updated>
<author>
<name>Heiner Kallweit</name>
<email>hkallweit1@gmail.com</email>
</author>
<published>2020-10-12T08:19:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=3569939a811e6d87df6dbd64235b9603a576432c'/>
<id>3569939a811e6d87df6dbd64235b9603a576432c</id>
<content type='text'>
Simplify the code by using new function dev_fetch_sw_netstats().

Signed-off-by: Heiner Kallweit &lt;hkallweit1@gmail.com&gt;
Link: https://lore.kernel.org/r/5e52dc91-97b1-82b0-214b-65d404e4a2ec@gmail.com
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Simplify the code by using new function dev_fetch_sw_netstats().

Signed-off-by: Heiner Kallweit &lt;hkallweit1@gmail.com&gt;
Link: https://lore.kernel.org/r/5e52dc91-97b1-82b0-214b-65d404e4a2ec@gmail.com
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: openvswitch: use dev_sw_netstats_rx_add()</title>
<updated>2020-10-06T13:23:21+00:00</updated>
<author>
<name>Fabian Frederick</name>
<email>fabf@skynet.be</email>
</author>
<published>2020-10-05T20:37:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=e40b3727f90b186d5845c96b14f7a1e9f965b712'/>
<id>e40b3727f90b186d5845c96b14f7a1e9f965b712</id>
<content type='text'>
use new helper for netstats settings

Signed-off-by: Fabian Frederick &lt;fabf@skynet.be&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 new helper for netstats settings

Signed-off-by: Fabian Frederick &lt;fabf@skynet.be&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: openvswitch: free vport unless register_netdevice() succeeds</title>
<updated>2019-10-22T21:45:08+00:00</updated>
<author>
<name>Hillf Danton</name>
<email>hdanton@sina.com</email>
</author>
<published>2019-10-21T10:01:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=9464cc37f3671ee69cb1c00662b5e1f113a96b23'/>
<id>9464cc37f3671ee69cb1c00662b5e1f113a96b23</id>
<content type='text'>
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;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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;
</pre>
</div>
</content>
</entry>
<entry>
<title>netfilter: drop bridge nf reset from nf_reset</title>
<updated>2019-10-01T16:42:15+00:00</updated>
<author>
<name>Florian Westphal</name>
<email>fw@strlen.de</email>
</author>
<published>2019-09-29T18:54:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=895b5c9f206eb7d25dc1360a8ccfc5958895eb89'/>
<id>895b5c9f206eb7d25dc1360a8ccfc5958895eb89</id>
<content type='text'>
commit 174e23810cd31
("sk_buff: drop all skb extensions on free and skb scrubbing") made napi
recycle always drop skb extensions.  The additional skb_ext_del() that is
performed via nf_reset on napi skb recycle is not needed anymore.

Most nf_reset() calls in the stack are there so queued skb won't block
'rmmod nf_conntrack' indefinitely.

This removes the skb_ext_del from nf_reset, and renames it to a more
fitting nf_reset_ct().

In a few selected places, add a call to skb_ext_reset to make sure that
no active extensions remain.

I am submitting this for "net", because we're still early in the release
cycle.  The patch applies to net-next too, but I think the rename causes
needless divergence between those trees.

Suggested-by: Eric Dumazet &lt;edumazet@google.com&gt;
Signed-off-by: Florian Westphal &lt;fw@strlen.de&gt;
Signed-off-by: Pablo Neira Ayuso &lt;pablo@netfilter.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 174e23810cd31
("sk_buff: drop all skb extensions on free and skb scrubbing") made napi
recycle always drop skb extensions.  The additional skb_ext_del() that is
performed via nf_reset on napi skb recycle is not needed anymore.

Most nf_reset() calls in the stack are there so queued skb won't block
'rmmod nf_conntrack' indefinitely.

This removes the skb_ext_del from nf_reset, and renames it to a more
fitting nf_reset_ct().

In a few selected places, add a call to skb_ext_reset to make sure that
no active extensions remain.

I am submitting this for "net", because we're still early in the release
cycle.  The patch applies to net-next too, but I think the rename causes
needless divergence between those trees.

Suggested-by: Eric Dumazet &lt;edumazet@google.com&gt;
Signed-off-by: Florian Westphal &lt;fw@strlen.de&gt;
Signed-off-by: Pablo Neira Ayuso &lt;pablo@netfilter.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
