Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[ upstream commit c8c2296 ] One issue caught by Coverity 340835 *unlock: axgbe_phy_set_mode unlocks pdata->phy_mutex *double_unlock: axgbe_phy_sfp_detect unlocks pdata->phy_mutex while it is unlocked. In axgbe_phy_sfp_detect()/axgbe_phy_set_redrv_mode(), axgbe_phy_get_comm_ownership() and axgbe_phy_put_comm_ownership() are invoked subsequently. Currently in axgbe_phy_get_comm_ownership(), during one of the case 'phy_data->comm_owned' is not protected and before returning 0, lock is not called and unlock is called in axgbe_phy_put_comm_ownership() directly which is incorrect. Ideally, the variable 'phy_data->comm_owned' needs to be protected. During success scenario, lock is called in axgbe_phy_get_comm_ownership() followed by unlock in axgbe_phy_put_comm_ownership(). In failure case, unlock is invoked in axgbe_phy_get_comm_ownership() itself appropriately. The fix is to protect 'phy_data->comm_owned' in the identified case ensuring locks/unlocks properly exist. Coverity issue: 340835 Fixes: a5c7273 ("net/axgbe: add phy programming APIs") Signed-off-by: Pallantla Poornima <pallantlax.poornima@intel.com> Acked-by: Ravi Kumar <ravi1.kumar@amd.com>
- Loading branch information