aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bna/bnad.c
diff options
context:
space:
mode:
authorJiri Slaby <jslaby@suse.cz>2010-09-03 22:08:41 -0400
committerDavid S. Miller <davem@davemloft.net>2010-09-06 21:29:18 -0400
commitca1cef3a3a8af961f504abfcf9e13dac088e1ad1 (patch)
treee7a09c304271f05c88fdc1d787bca576163afa93 /drivers/net/bna/bnad.c
parente8f7f43a4ad451ecfb2689985f99a9e276a08bba (diff)
NET: bna, fix lock imbalance
bnad_set_rx_mode omit to unlock bna_lock on one fail path. Fix that. Signed-off-by: Jiri Slaby <jslaby@suse.cz> Cc: Debashis Dutt <ddutt@brocade.com> Cc: Rasesh Mody <rmody@brocade.com> Cc: David S. Miller <davem@davemloft.net> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bna/bnad.c')
-rw-r--r--drivers/net/bna/bnad.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/bna/bnad.c b/drivers/net/bna/bnad.c
index 44adc7aefddc..8158fb93cb4c 100644
--- a/drivers/net/bna/bnad.c
+++ b/drivers/net/bna/bnad.c
@@ -2702,7 +2702,7 @@ bnad_set_rx_mode(struct net_device *netdev)
2702 kzalloc((mc_count + 1) * ETH_ALEN, 2702 kzalloc((mc_count + 1) * ETH_ALEN,
2703 GFP_ATOMIC); 2703 GFP_ATOMIC);
2704 if (!mcaddr_list) 2704 if (!mcaddr_list)
2705 return; 2705 goto unlock;
2706 2706
2707 memcpy(&mcaddr_list[0], &bnad_bcast_addr[0], ETH_ALEN); 2707 memcpy(&mcaddr_list[0], &bnad_bcast_addr[0], ETH_ALEN);
2708 2708
@@ -2715,6 +2715,7 @@ bnad_set_rx_mode(struct net_device *netdev)
2715 /* Should we enable BNAD_CF_ALLMULTI for err != 0 ? */ 2715 /* Should we enable BNAD_CF_ALLMULTI for err != 0 ? */
2716 kfree(mcaddr_list); 2716 kfree(mcaddr_list);
2717 } 2717 }
2718unlock:
2718 spin_unlock_irqrestore(&bnad->bna_lock, flags); 2719 spin_unlock_irqrestore(&bnad->bna_lock, flags);
2719} 2720}
2720 2721