diff options
Diffstat (limited to 'drivers/net/bonding/bond_alb.c')
| -rw-r--r-- | drivers/net/bonding/bond_alb.c | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c index ade5f3f6693..87437c78847 100644 --- a/drivers/net/bonding/bond_alb.c +++ b/drivers/net/bonding/bond_alb.c @@ -169,11 +169,14 @@ static void tlb_clear_slave(struct bonding *bond, struct slave *slave, int save_  	/* clear slave from tx_hashtbl */  	tx_hash_table = BOND_ALB_INFO(bond).tx_hashtbl; -	index = SLAVE_TLB_INFO(slave).head; -	while (index != TLB_NULL_INDEX) { -		u32 next_index = tx_hash_table[index].next; -		tlb_init_table_entry(&tx_hash_table[index], save_load); -		index = next_index; +	/* skip this if we've already freed the tx hash table */ +	if (tx_hash_table) { +		index = SLAVE_TLB_INFO(slave).head; +		while (index != TLB_NULL_INDEX) { +			u32 next_index = tx_hash_table[index].next; +			tlb_init_table_entry(&tx_hash_table[index], save_load); +			index = next_index; +		}  	}  	tlb_init_slave(slave);  |