diff mbox series

[net] net/core: Do not clear VF index for node/port GUIDs query

Message ID 20200130125949.409354-1-leon@kernel.org
State Accepted
Delegated to: David Miller
Headers show
Series [net] net/core: Do not clear VF index for node/port GUIDs query | expand

Commit Message

Leon Romanovsky Jan. 30, 2020, 12:59 p.m. UTC
From: Leon Romanovsky <leonro@mellanox.com>

VF numbers were assigned to node_guid and port_guid, but cleared
right before such query calls were issued. It caused to return
node/port GUIDs of VF index 0 for all VFs.

Fixes: 30aad41721e0 ("net/core: Add support for getting VF GUIDs")
Reported-by: Adrian Chiris <adrianc@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
---
 net/core/rtnetlink.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--
2.24.1

Comments

David Miller Jan. 30, 2020, 2:21 p.m. UTC | #1
From: Leon Romanovsky <leon@kernel.org>
Date: Thu, 30 Jan 2020 14:59:49 +0200

> From: Leon Romanovsky <leonro@mellanox.com>
> 
> VF numbers were assigned to node_guid and port_guid, but cleared
> right before such query calls were issued. It caused to return
> node/port GUIDs of VF index 0 for all VFs.
> 
> Fixes: 30aad41721e0 ("net/core: Add support for getting VF GUIDs")
> Reported-by: Adrian Chiris <adrianc@mellanox.com>
> Signed-off-by: Leon Romanovsky <leonro@mellanox.com>

Looks good, applied and queued up for -stable.
diff mbox series

Patch

diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index cdad6ed532c4..09c44bf2e1d2 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -1242,6 +1242,8 @@  static noinline_for_stack int rtnl_fill_vfinfo(struct sk_buff *skb,
 		return 0;

 	memset(&vf_vlan_info, 0, sizeof(vf_vlan_info));
+	memset(&node_guid, 0, sizeof(node_guid));
+	memset(&port_guid, 0, sizeof(port_guid));

 	vf_mac.vf =
 		vf_vlan.vf =
@@ -1290,8 +1292,6 @@  static noinline_for_stack int rtnl_fill_vfinfo(struct sk_buff *skb,
 		    sizeof(vf_trust), &vf_trust))
 		goto nla_put_vf_failure;

-	memset(&node_guid, 0, sizeof(node_guid));
-	memset(&port_guid, 0, sizeof(port_guid));
 	if (dev->netdev_ops->ndo_get_vf_guid &&
 	    !dev->netdev_ops->ndo_get_vf_guid(dev, vfs_num, &node_guid,
 					      &port_guid)) {