If a bonded device is created when there are no slave devices there is loop in bond_ethdev_promiscous_enable() which results in a segmentation fault. I have applied a similar fix to bond_ethdev_promiscous_disable() where a similar loop could occur.
Fixes: 2efb58cbab6e ("bond: new link bonding library") Signed-off-by: Bernard Iremonger <bernard.iremonger at intel.com> --- drivers/net/bonding/rte_eth_bond_pmd.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c index b63c886..78972fc 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -1870,7 +1870,8 @@ bond_ethdev_promiscuous_enable(struct rte_eth_dev *eth_dev) case BONDING_MODE_TLB: case BONDING_MODE_ALB: default: - rte_eth_promiscuous_enable(internals->current_primary_port); + if (internals->slave_count > 0) + rte_eth_promiscuous_enable(internals->current_primary_port); } } @@ -1898,7 +1899,8 @@ bond_ethdev_promiscuous_disable(struct rte_eth_dev *dev) case BONDING_MODE_TLB: case BONDING_MODE_ALB: default: - rte_eth_promiscuous_disable(internals->current_primary_port); + if (internals->slave_count > 0) + rte_eth_promiscuous_disable(internals->current_primary_port); } } -- 2.6.3