From: Beilei Xing Date: Thu, 23 Jun 2016 07:22:20 +0000 (+0800) Subject: net/ixgbe/base: fix error path to release lock X-Git-Tag: spdx-start~6372 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=4fe0982ee75f7397fd2d657d827eeb40606ad11c;p=dpdk.git net/ixgbe/base: fix error path to release lock When there is an error getting the PHY token, the error path fails to release the locks that it has taken. Release those locks in that failure case. Fixes: 86b8fb293fdf ("ixgbe/base: add sw-firmware sync for resource sharing on X550em_a") Signed-off-by: Beilei Xing --- diff --git a/drivers/net/ixgbe/base/ixgbe_x550.c b/drivers/net/ixgbe/base/ixgbe_x550.c index f129e8cc49..daa833998f 100644 --- a/drivers/net/ixgbe/base/ixgbe_x550.c +++ b/drivers/net/ixgbe/base/ixgbe_x550.c @@ -3531,17 +3531,22 @@ static s32 ixgbe_acquire_swfw_sync_X550a(struct ixgbe_hw *hw, u32 mask) DEBUGFUNC("ixgbe_acquire_swfw_sync_X550a"); while (--retries) { + status = IXGBE_SUCCESS; if (hmask) status = ixgbe_acquire_swfw_sync_X540(hw, hmask); if (status) - break; + return status; if (!(mask & IXGBE_GSSR_TOKEN_SM)) - break; + return IXGBE_SUCCESS; + status = ixgbe_get_phy_token(hw); - if (status != IXGBE_ERR_TOKEN_RETRY) - break; + if (status == IXGBE_SUCCESS) + return IXGBE_SUCCESS; + if (hmask) ixgbe_release_swfw_sync_X540(hw, hmask); + if (status != IXGBE_ERR_TOKEN_RETRY) + return status; msec_delay(FW_PHY_TOKEN_DELAY); }