* [dpdk-dev] [PATCH] net/bonding: fix segfault when creating bonded device @ 2018-10-31 13:59 Radu Nicolau 2018-10-31 15:06 ` Thomas Monjalon 2018-10-31 15:50 ` [dpdk-dev] [PATCH v2] " Radu Nicolau 0 siblings, 2 replies; 9+ messages in thread From: Radu Nicolau @ 2018-10-31 13:59 UTC (permalink / raw) To: dev; +Cc: thomas, declan.doherty, chas3, Radu Nicolau After the patch below the call to rte_eth_bond_8023ad_agg_selection_set from probe() segfaults; there is no need to call the function, just set the mode directly. Fixes: 391797f04208 ("drivers/bus: move driver assignment to end of probing") Signed-off-by: Radu Nicolau <radu.nicolau@intel.com> --- drivers/net/bonding/rte_eth_bond_pmd.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c index 156f31c..6421b96 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -3230,10 +3230,9 @@ bond_probe(struct rte_vdev_device *dev) } if (internals->mode == BONDING_MODE_8023AD) - rte_eth_bond_8023ad_agg_selection_set(port_id, - agg_mode); + internals->mode4.agg_selection = agg_mode; } else { - rte_eth_bond_8023ad_agg_selection_set(port_id, AGG_STABLE); + internals->mode4.agg_selection = AGG_STABLE; } RTE_BOND_LOG(INFO, "Create bonded device %s on port %d in mode %u on " -- 2.7.5 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH] net/bonding: fix segfault when creating bonded device 2018-10-31 13:59 [dpdk-dev] [PATCH] net/bonding: fix segfault when creating bonded device Radu Nicolau @ 2018-10-31 15:06 ` Thomas Monjalon 2018-10-31 15:34 ` Radu Nicolau 2018-10-31 15:37 ` Chas Williams 2018-10-31 15:50 ` [dpdk-dev] [PATCH v2] " Radu Nicolau 1 sibling, 2 replies; 9+ messages in thread From: Thomas Monjalon @ 2018-10-31 15:06 UTC (permalink / raw) To: Radu Nicolau; +Cc: dev, declan.doherty, chas3, ferruh.yigit, arybchenko 31/10/2018 14:59, Radu Nicolau: > After the patch below the call to rte_eth_bond_8023ad_agg_selection_set > from probe() segfaults; there is no need to call the function, just set > the mode directly. > > Fixes: 391797f04208 ("drivers/bus: move driver assignment to end of probing") It would not segfault if you call rte_eth_dev_probing_finish() at the real end of the probing function. Then the port will be considered not valid in rte_eth_bond_8023ad_agg_selection_set(). It does not solve your problem but it is more correct. So I suggest to revert this patch (which was a wrong fix): http://git.dpdk.org/dpdk/commit/?id=1620175 Then the issue is to allow configuring a port before the end of probing. This patch is workarounding the public API which checks port validity. I think it is a good approach. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH] net/bonding: fix segfault when creating bonded device 2018-10-31 15:06 ` Thomas Monjalon @ 2018-10-31 15:34 ` Radu Nicolau 2018-10-31 15:37 ` Chas Williams 1 sibling, 0 replies; 9+ messages in thread From: Radu Nicolau @ 2018-10-31 15:34 UTC (permalink / raw) To: Thomas Monjalon; +Cc: dev, declan.doherty, chas3, ferruh.yigit, arybchenko On 10/31/2018 3:06 PM, Thomas Monjalon wrote: > 31/10/2018 14:59, Radu Nicolau: >> After the patch below the call to rte_eth_bond_8023ad_agg_selection_set >> from probe() segfaults; there is no need to call the function, just set >> the mode directly. >> >> Fixes: 391797f04208 ("drivers/bus: move driver assignment to end of probing") > It would not segfault if you call rte_eth_dev_probing_finish() at the > real end of the probing function. Then the port will be considered not > valid in rte_eth_bond_8023ad_agg_selection_set(). But we need to set the mode, the call to rte_eth_bond_8023ad_agg_selection_set() assumed before that it will actually succeed, which is not the case anymore. I will look at reverting that patch/fix, it is likely not needed anymore anyway if this patch is applied. > It does not solve your problem but it is more correct. > So I suggest to revert this patch (which was a wrong fix): > http://git.dpdk.org/dpdk/commit/?id=1620175 > > Then the issue is to allow configuring a port before the end of probing. > This patch is workarounding the public API which checks port validity. > I think it is a good approach. > In probe() we need to set the mode, and we know that the port is a valid bonding port, so there is no need to check. Any other call bar the ones in probe remain the same. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH] net/bonding: fix segfault when creating bonded device 2018-10-31 15:06 ` Thomas Monjalon 2018-10-31 15:34 ` Radu Nicolau @ 2018-10-31 15:37 ` Chas Williams 2018-10-31 15:44 ` Thomas Monjalon 1 sibling, 1 reply; 9+ messages in thread From: Chas Williams @ 2018-10-31 15:37 UTC (permalink / raw) To: Thomas Monjalon, Radu Nicolau Cc: dev, declan.doherty, chas3, ferruh.yigit, arybchenko On 10/31/2018 11:06 AM, Thomas Monjalon wrote: > 31/10/2018 14:59, Radu Nicolau: >> After the patch below the call to rte_eth_bond_8023ad_agg_selection_set >> from probe() segfaults; there is no need to call the function, just set >> the mode directly. >> >> Fixes: 391797f04208 ("drivers/bus: move driver assignment to end of probing") > > It would not segfault if you call rte_eth_dev_probing_finish() at the > real end of the probing function. Then the port will be considered not > valid in rte_eth_bond_8023ad_agg_selection_set(). > It does not solve your problem but it is more correct. > So I suggest to revert this patch (which was a wrong fix): > http://git.dpdk.org/dpdk/commit/?id=1620175 Or just make the change proposed in this commit and also move this section before the probing finish. This is performing initial setup of the interface and it doesn't need to use the public API to do this. And this should be done before the public API can access the device. > Then the issue is to allow configuring a port before the end of probing. That shouldn't be allowed of course. > This patch is workarounding the public API which checks port validity. > I think it is a good approach. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH] net/bonding: fix segfault when creating bonded device 2018-10-31 15:37 ` Chas Williams @ 2018-10-31 15:44 ` Thomas Monjalon 0 siblings, 0 replies; 9+ messages in thread From: Thomas Monjalon @ 2018-10-31 15:44 UTC (permalink / raw) To: Chas Williams Cc: Radu Nicolau, dev, declan.doherty, chas3, ferruh.yigit, arybchenko 31/10/2018 16:37, Chas Williams: > > On 10/31/2018 11:06 AM, Thomas Monjalon wrote: > > 31/10/2018 14:59, Radu Nicolau: > >> After the patch below the call to rte_eth_bond_8023ad_agg_selection_set > >> from probe() segfaults; there is no need to call the function, just set > >> the mode directly. > >> > >> Fixes: 391797f04208 ("drivers/bus: move driver assignment to end of probing") > > > > It would not segfault if you call rte_eth_dev_probing_finish() at the > > real end of the probing function. Then the port will be considered not > > valid in rte_eth_bond_8023ad_agg_selection_set(). > > It does not solve your problem but it is more correct. > > So I suggest to revert this patch (which was a wrong fix): > > http://git.dpdk.org/dpdk/commit/?id=1620175 > > Or just make the change proposed in this commit and also move this > section before the probing finish. This is performing initial setup of > the interface and it doesn't need to use the public API to do this. > And this should be done before the public API can access the device. Yes, this is what I proposed, but said differently :) Please add Fixes: 1620175b400e ("net/bonding: fix invalid port id") > > Then the issue is to allow configuring a port before the end of probing. > > That shouldn't be allowed of course. > > > This patch is workarounding the public API which checks port validity. > > I think it is a good approach. ^ permalink raw reply [flat|nested] 9+ messages in thread
* [dpdk-dev] [PATCH v2] net/bonding: fix segfault when creating bonded device 2018-10-31 13:59 [dpdk-dev] [PATCH] net/bonding: fix segfault when creating bonded device Radu Nicolau 2018-10-31 15:06 ` Thomas Monjalon @ 2018-10-31 15:50 ` Radu Nicolau 2018-10-31 16:11 ` Thomas Monjalon 2018-10-31 16:14 ` Chas Williams 1 sibling, 2 replies; 9+ messages in thread From: Radu Nicolau @ 2018-10-31 15:50 UTC (permalink / raw) To: dev; +Cc: thomas, declan.doherty, chas3, ferruh.yigit, arybchenko, Radu Nicolau After the patch below the call to rte_eth_bond_8023ad_agg_selection_set from probe() segfaults; there is no need to call the function, just set the mode directly. Also, reverted 1620175b400e. Fixes: 391797f04208 ("drivers/bus: move driver assignment to end of probing") Fixes: 1620175b400e ("net/bonding: fix invalid port id") Signed-off-by: Radu Nicolau <radu.nicolau@intel.com> --- v2: reverted earlier patch drivers/net/bonding/rte_eth_bond_pmd.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c index 156f31c..1a6d8e4 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -3216,8 +3216,6 @@ bond_probe(struct rte_vdev_device *dev) internals = rte_eth_devices[port_id].data->dev_private; internals->kvlist = kvlist; - rte_eth_dev_probing_finish(&rte_eth_devices[port_id]); - if (rte_kvargs_count(kvlist, PMD_BOND_AGG_MODE_KVARG) == 1) { if (rte_kvargs_process(kvlist, PMD_BOND_AGG_MODE_KVARG, @@ -3230,12 +3228,12 @@ bond_probe(struct rte_vdev_device *dev) } if (internals->mode == BONDING_MODE_8023AD) - rte_eth_bond_8023ad_agg_selection_set(port_id, - agg_mode); + internals->mode4.agg_selection = agg_mode; } else { - rte_eth_bond_8023ad_agg_selection_set(port_id, AGG_STABLE); + internals->mode4.agg_selection = AGG_STABLE; } + rte_eth_dev_probing_finish(&rte_eth_devices[port_id]); RTE_BOND_LOG(INFO, "Create bonded device %s on port %d in mode %u on " "socket %u.", name, port_id, bonding_mode, socket_id); return 0; -- 2.7.5 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH v2] net/bonding: fix segfault when creating bonded device 2018-10-31 15:50 ` [dpdk-dev] [PATCH v2] " Radu Nicolau @ 2018-10-31 16:11 ` Thomas Monjalon 2018-10-31 16:14 ` Chas Williams 1 sibling, 0 replies; 9+ messages in thread From: Thomas Monjalon @ 2018-10-31 16:11 UTC (permalink / raw) To: Radu Nicolau; +Cc: dev, declan.doherty, chas3, ferruh.yigit, arybchenko 31/10/2018 16:50, Radu Nicolau: > After the patch below the call to rte_eth_bond_8023ad_agg_selection_set > from probe() segfaults; there is no need to call the function, just set > the mode directly. > Also, reverted 1620175b400e. > > Fixes: 391797f04208 ("drivers/bus: move driver assignment to end of probing") > Fixes: 1620175b400e ("net/bonding: fix invalid port id") > > Signed-off-by: Radu Nicolau <radu.nicolau@intel.com> I cannot ack because I do not master this PMD, but it looks good to me. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH v2] net/bonding: fix segfault when creating bonded device 2018-10-31 15:50 ` [dpdk-dev] [PATCH v2] " Radu Nicolau 2018-10-31 16:11 ` Thomas Monjalon @ 2018-10-31 16:14 ` Chas Williams 2018-11-02 20:36 ` Ferruh Yigit 1 sibling, 1 reply; 9+ messages in thread From: Chas Williams @ 2018-10-31 16:14 UTC (permalink / raw) To: Radu Nicolau, dev; +Cc: thomas, declan.doherty, chas3, ferruh.yigit, arybchenko On 10/31/2018 11:50 AM, Radu Nicolau wrote: > After the patch below the call to rte_eth_bond_8023ad_agg_selection_set > from probe() segfaults; there is no need to call the function, just set > the mode directly. > Also, reverted 1620175b400e. > > Fixes: 391797f04208 ("drivers/bus: move driver assignment to end of probing") > Fixes: 1620175b400e ("net/bonding: fix invalid port id") > > Signed-off-by: Radu Nicolau <radu.nicolau@intel.com> Acked-by: Chas Williams <chas3@att.com> > --- > v2: reverted earlier patch > > drivers/net/bonding/rte_eth_bond_pmd.c | 8 +++----- > 1 file changed, 3 insertions(+), 5 deletions(-) > > diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c > index 156f31c..1a6d8e4 100644 > --- a/drivers/net/bonding/rte_eth_bond_pmd.c > +++ b/drivers/net/bonding/rte_eth_bond_pmd.c > @@ -3216,8 +3216,6 @@ bond_probe(struct rte_vdev_device *dev) > internals = rte_eth_devices[port_id].data->dev_private; > internals->kvlist = kvlist; > > - rte_eth_dev_probing_finish(&rte_eth_devices[port_id]); > - > if (rte_kvargs_count(kvlist, PMD_BOND_AGG_MODE_KVARG) == 1) { > if (rte_kvargs_process(kvlist, > PMD_BOND_AGG_MODE_KVARG, > @@ -3230,12 +3228,12 @@ bond_probe(struct rte_vdev_device *dev) > } > > if (internals->mode == BONDING_MODE_8023AD) > - rte_eth_bond_8023ad_agg_selection_set(port_id, > - agg_mode); > + internals->mode4.agg_selection = agg_mode; > } else { > - rte_eth_bond_8023ad_agg_selection_set(port_id, AGG_STABLE); > + internals->mode4.agg_selection = AGG_STABLE; > } > > + rte_eth_dev_probing_finish(&rte_eth_devices[port_id]); > RTE_BOND_LOG(INFO, "Create bonded device %s on port %d in mode %u on " > "socket %u.", name, port_id, bonding_mode, socket_id); > return 0; > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH v2] net/bonding: fix segfault when creating bonded device 2018-10-31 16:14 ` Chas Williams @ 2018-11-02 20:36 ` Ferruh Yigit 0 siblings, 0 replies; 9+ messages in thread From: Ferruh Yigit @ 2018-11-02 20:36 UTC (permalink / raw) To: Chas Williams, Radu Nicolau, dev Cc: thomas, declan.doherty, chas3, arybchenko On 10/31/2018 4:14 PM, Chas Williams wrote: > > > On 10/31/2018 11:50 AM, Radu Nicolau wrote: >> After the patch below the call to rte_eth_bond_8023ad_agg_selection_set >> from probe() segfaults; there is no need to call the function, just set >> the mode directly. >> Also, reverted 1620175b400e. >> >> Fixes: 391797f04208 ("drivers/bus: move driver assignment to end of probing") >> Fixes: 1620175b400e ("net/bonding: fix invalid port id") >> >> Signed-off-by: Radu Nicolau <radu.nicolau@intel.com> > > Acked-by: Chas Williams <chas3@att.com> Applied to dpdk-next-net/master, thanks. ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2018-11-02 20:36 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-10-31 13:59 [dpdk-dev] [PATCH] net/bonding: fix segfault when creating bonded device Radu Nicolau 2018-10-31 15:06 ` Thomas Monjalon 2018-10-31 15:34 ` Radu Nicolau 2018-10-31 15:37 ` Chas Williams 2018-10-31 15:44 ` Thomas Monjalon 2018-10-31 15:50 ` [dpdk-dev] [PATCH v2] " Radu Nicolau 2018-10-31 16:11 ` Thomas Monjalon 2018-10-31 16:14 ` Chas Williams 2018-11-02 20:36 ` Ferruh Yigit
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).