Skip to contentSkip to conversation

Patch "net/mlx4_core: Fix wrong index in propagating port change event to VFs" has been added to the 3.14-stable tree

PATCH [email protected] 2 participants 3 messages Sep 26, 2015 – Sep 28, 2015

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

net/mlx4_core: Fix wrong index in propagating port change event to VFs

to the 3.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
net-mlx4_core-fix-wrong-index-in-propagating-port-change-event-to-vfs.patch
and it can be found in the queue-3.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From foo@baz Sat Sep 26 11:19:08 PDT 2015

From: Jack Morgenstein <[email protected]>
Date: Wed, 22 Jul 2015 16:53:47 +0300
Subject: net/mlx4_core: Fix wrong index in propagating port change event to VFs

From: Jack Morgenstein <[email protected]>

[ Upstream commit 1c1bf34951e8d17941bf708d1901c47e81b15d55 ]

The port-change event processing in procedure mlx4_eq_int() uses "slave" as the vf_oper array index. Since the value of "slave" is the PF function index, the result is that the PF link state is used for deciding to propagate the event for all the VFs. The VF link state should be used, so the VF function index should be used here.

Fixes 948e306d7d64 ('net/mlx4: Add VF link state support')
---
 drivers/net/ethernet/mellanox/mlx4/eq.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/net/ethernet/mellanox/mlx4/eq.c +2 -2
@@ -557,7 +557,7 @@ static int mlx4_eq_int(struct mlx4_dev *
 						mlx4_dbg(dev, "%s: Sending MLX4_PORT_CHANGE_SUBTYPE_DOWN"
 							 " to slave: %d, port:%d\n",
 							 __func__, i, port);
-						s_info = &priv->mfunc.master.vf_oper[slave].vport[port].state;
+						s_info = &priv->mfunc.master.vf_oper[i].vport[port].state;
 						if (IFLA_VF_LINK_STATE_AUTO == s_info->link_state)
 							mlx4_slave_event(dev, i, eqe);
 					} else {  /* IB port */
@@ -583,7 +583,7 @@ static int mlx4_eq_int(struct mlx4_dev *
 					for (i = 0; i < dev->num_slaves; i++) {
 						if (i == mlx4_master_func_num(dev))
 							continue;
-						s_info = &priv->mfunc.master.vf_oper[slave].vport[port].state;
+						s_info = &priv->mfunc.master.vf_oper[slave].vport[i].state;
 						if (IFLA_VF_LINK_STATE_AUTO == s_info->link_state)
 							mlx4_slave_event(dev, i, eqe);
 					}

Patches currently in stable-queue which might be from [email protected] are

queue-3.14/net-mlx4_core-fix-wrong-index-in-propagating-port-change-event-to-vfs.patch queue-3.14/ib-mlx4-forbid-using-sysfs-to-change-roce-pkeys.patch

#1 lore raw
Quoted 53 lines · Greg Kroah-Hartman

This is a note to let you know that I've just added the patch titled

net/mlx4_core: Fix wrong index in propagating port change event to VFs

to the 3.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
net-mlx4_core-fix-wrong-index-in-propagating-port-change-event-to-vfs.patch
and it can be found in the queue-3.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

From foo@baz Sat Sep 26 11:19:08 PDT 2015
From: Jack Morgenstein <[email protected]>
Date: Wed, 22 Jul 2015 16:53:47 +0300
Subject: net/mlx4_core: Fix wrong index in propagating port change event to VFs

From: Jack Morgenstein <[email protected]>

[ Upstream commit 1c1bf34951e8d17941bf708d1901c47e81b15d55 ]

The port-change event processing in procedure mlx4_eq_int() uses "slave" as the vf_oper array index. Since the value of "slave" is the PF function index, the result is that the PF link state is used for deciding to propagate the event for all the VFs. The VF link state should be used, so the VF function index should be used here.

Fixes 948e306d7d64 ('net/mlx4: Add VF link state support')
---
 drivers/net/ethernet/mellanox/mlx4/eq.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/net/ethernet/mellanox/mlx4/eq.c +1 -1
@@ -557,7 +557,7 @@ static int mlx4_eq_int(struct mlx4_dev *
 						mlx4_dbg(dev, "%s: Sending MLX4_PORT_CHANGE_SUBTYPE_DOWN"
 							 " to slave: %d, port:%d\n",
 							 __func__, i, port);
-						s_info = &priv->mfunc.master.vf_oper[slave].vport[port].state;
+						s_info = &priv->mfunc.master.vf_oper[i].vport[port].state;
 						if (IFLA_VF_LINK_STATE_AUTO == s_info->link_state)
 							mlx4_slave_event(dev, i, eqe);
 					} else {  /* IB port */

drivers/net/ethernet/mellanox/mlx4/eq.c static int mlx4_eq_int(struct mlx4_dev * · line 586

Quoted 5 lines
drivers/net/ethernet/mellanox/mlx4/eq.c +1 -1
@@ -583,7 +583,7 @@ static int mlx4_eq_int(struct mlx4_dev *
 					for (i = 0; i < dev->num_slaves; i++) {
 						if (i == mlx4_master_func_num(dev))
 							continue;
-						s_info = &priv->mfunc.master.vf_oper[slave].vport[port].state;
+						s_info = &priv->mfunc.master.vf_oper[slave].vport[i].state;

As I said previously, this is incorrect; it should be:

- s_info = &priv->mfunc.master.vf_oper[slave].vport[port].state;
+ s_info = &priv->mfunc.master.vf_oper[i].vport[port].state;

The 'slave' index should be changed by 'i', not 'port'.

Cheers,
--
Lu�s

Quoted 13 lines
drivers/net/ethernet/mellanox/mlx4/eq.c +0 -0
 						if (IFLA_VF_LINK_STATE_AUTO == s_info->link_state)
 							mlx4_slave_event(dev, i, eqe);
 					}

Patches currently in stable-queue which might be from [email protected] are

queue-3.14/net-mlx4_core-fix-wrong-index-in-propagating-port-change-event-to-vfs.patch queue-3.14/ib-mlx4-forbid-using-sysfs-to-change-roce-pkeys.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

author maintainer
#2 lore raw
Quoted 65 lines · Luis Henriques
Quoted 53 lines · Greg Kroah-Hartman

This is a note to let you know that I've just added the patch titled

net/mlx4_core: Fix wrong index in propagating port change event to VFs

to the 3.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
net-mlx4_core-fix-wrong-index-in-propagating-port-change-event-to-vfs.patch
and it can be found in the queue-3.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

From foo@baz Sat Sep 26 11:19:08 PDT 2015
From: Jack Morgenstein <[email protected]>
Date: Wed, 22 Jul 2015 16:53:47 +0300
Subject: net/mlx4_core: Fix wrong index in propagating port change event to VFs

From: Jack Morgenstein <[email protected]>

[ Upstream commit 1c1bf34951e8d17941bf708d1901c47e81b15d55 ]

The port-change event processing in procedure mlx4_eq_int() uses "slave" as the vf_oper array index. Since the value of "slave" is the PF function index, the result is that the PF link state is used for deciding to propagate the event for all the VFs. The VF link state should be used, so the VF function index should be used here.

Fixes 948e306d7d64 ('net/mlx4: Add VF link state support')
---
 drivers/net/ethernet/mellanox/mlx4/eq.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/net/ethernet/mellanox/mlx4/eq.c +1 -1
@@ -557,7 +557,7 @@ static int mlx4_eq_int(struct mlx4_dev *
 						mlx4_dbg(dev, "%s: Sending MLX4_PORT_CHANGE_SUBTYPE_DOWN"
 							 " to slave: %d, port:%d\n",
 							 __func__, i, port);
-						s_info = &priv->mfunc.master.vf_oper[slave].vport[port].state;
+						s_info = &priv->mfunc.master.vf_oper[i].vport[port].state;
 						if (IFLA_VF_LINK_STATE_AUTO == s_info->link_state)
 							mlx4_slave_event(dev, i, eqe);
 					} else {  /* IB port */

drivers/net/ethernet/mellanox/mlx4/eq.c static int mlx4_eq_int(struct mlx4_dev * · line 586

Quoted 5 lines
drivers/net/ethernet/mellanox/mlx4/eq.c +1 -1
@@ -583,7 +583,7 @@ static int mlx4_eq_int(struct mlx4_dev *
 					for (i = 0; i < dev->num_slaves; i++) {
 						if (i == mlx4_master_func_num(dev))
 							continue;
-						s_info = &priv->mfunc.master.vf_oper[slave].vport[port].state;
+						s_info = &priv->mfunc.master.vf_oper[slave].vport[i].state;

As I said previously, this is incorrect; it should be:

drivers/net/ethernet/mellanox/mlx4/eq.c +1 -1
-						s_info = &priv->mfunc.master.vf_oper[slave].vport[port].state;
+						s_info = &priv->mfunc.master.vf_oper[i].vport[port].state;
Quoted 1 line

The 'slave' index should be changed by 'i', not 'port'.

Thanks, that fix was still in my todo pile, now done.

greg k-h