aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorChien Tung <chien.tin.tung@intel.com>2010-05-25 11:13:09 -0400
committerRoland Dreier <rolandd@cisco.com>2010-05-25 12:53:06 -0400
commitb17e0969dc184c66ed8934e130344621829484a3 (patch)
tree295bac6059854638bdf75db5c09a6fdd6de831bf /drivers/infiniband
parentdf02902313feb1472bc6ec16e486f72b39e9d4b2 (diff)
RDMA/nes: Fix incorrect unlock in nes_process_mac_intr()
Commit ce6e74f2 ("RDMA/nes: Make nesadapter->phy_lock usage consistent") introduced a problem where phy_lock was only unlocked within an if statement and so nes_process_mac_intr() could return with phy_lock still held. Fix this. This was discovered because of the sparse warning: drivers/infiniband/hw/nes/nes_hw.c:2643:9: warning: context imbalance in 'nes_process_mac_intr' - different lock contexts for basic block Reported-by: Roland Dreier <rdreier@cisco.com> Signed-off-by: Chien Tung <chien.tin.tung@intel.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/hw/nes/nes_hw.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/nes/nes_hw.c b/drivers/infiniband/hw/nes/nes_hw.c
index bb9c77504fe2..57874a165083 100644
--- a/drivers/infiniband/hw/nes/nes_hw.c
+++ b/drivers/infiniband/hw/nes/nes_hw.c
@@ -2584,7 +2584,6 @@ static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number)
2584 break; 2584 break;
2585 } 2585 }
2586 } 2586 }
2587 spin_unlock_irqrestore(&nesadapter->phy_lock, flags);
2588 2587
2589 if (phy_data & 0x0004) { 2588 if (phy_data & 0x0004) {
2590 if (wide_ppm_offset && 2589 if (wide_ppm_offset &&
@@ -2639,6 +2638,8 @@ static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number)
2639 } 2638 }
2640 } 2639 }
2641 2640
2641 spin_unlock_irqrestore(&nesadapter->phy_lock, flags);
2642
2642 nesadapter->mac_sw_state[mac_number] = NES_MAC_SW_IDLE; 2643 nesadapter->mac_sw_state[mac_number] = NES_MAC_SW_IDLE;
2643} 2644}
2644 2645