bonding: fix crash when stopping inactive slave
authorJan Blunck <jblunck@infradead.org>
Wed, 24 Jun 2015 21:01:23 +0000 (14:01 -0700)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Sun, 28 Jun 2015 22:33:50 +0000 (00:33 +0200)
When stopping the bond device we don't need to try and free up the LACPDU's
from deactivated devices since this is covered by
bond_mode_8023ad_deactivate_slave().

This fixes the following:
[    0.100569] PANIC in bond_ethdev_stop():
[    0.100589] line 1172        assert "port->rx_ring != NULL" failed

Signed-off-by: Jan Blunck <jblunck@infradead.org>
Acked-by: Declan Doherty <declan.doherty@intel.com>
drivers/net/bonding/rte_eth_bond_pmd.c

index 7888a7f..989e878 100644 (file)
@@ -1525,8 +1525,8 @@ bond_ethdev_stop(struct rte_eth_dev *eth_dev)
                bond_mode_8023ad_stop(eth_dev);
 
                /* Discard all messages to/from mode 4 state machines */
-               for (i = 0; i < internals->slave_count; i++) {
-                       port = &mode_8023ad_ports[internals->slaves[i].port_id];
+               for (i = 0; i < internals->active_slave_count; i++) {
+                       port = &mode_8023ad_ports[internals->active_slaves[i]];
 
                        RTE_VERIFY(port->rx_ring != NULL);
                        while (rte_ring_dequeue(port->rx_ring, &pkt) != -ENOENT)