[dpdk-dev] [PATCH] net/axgbe: fix protential unreleased lock problem

From: Chengfeng Ye <hidden>
Date: 2021-08-26 17:24:53
Subsystem: networking drivers, the rest · Maintainers: Andrew Lunn, "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Torvalds

The lock pdata->phy_mutex may not be correctly released if the function return in these two branches, which may lead to deadlock if the lock is acuired again. The patch is to fix this problem.

Cc: cyeaa@connect.ust.hk
Bugzilla ID: 776

Signed-off-by: Chengfeng Ye <redacted>
---
 drivers/net/axgbe/axgbe_phy_impl.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/net/axgbe/axgbe_phy_impl.c b/drivers/net/axgbe/axgbe_phy_impl.c
index 02236ec192..cf39095ee4 100644
--- a/drivers/net/axgbe/axgbe_phy_impl.c
+++ b/drivers/net/axgbe/axgbe_phy_impl.c
@@ -418,8 +418,10 @@ static int axgbe_phy_get_comm_ownership(struct axgbe_port *pdata)
 	 */
 	pthread_mutex_lock(&pdata->phy_mutex);
 
-	if (phy_data->comm_owned)
+	if (phy_data->comm_owned) {
+		pthread_mutex_unlock(&pdata->phy_mutex);
 		return 0;
+	}
 
 	/* Clear the mutexes */
 	XP_IOWRITE(pdata, XP_I2C_MUTEX, AXGBE_MUTEX_RELEASE);
@@ -444,6 +446,7 @@ static int axgbe_phy_get_comm_ownership(struct axgbe_port *pdata)
 		XP_IOWRITE(pdata, XP_MDIO_MUTEX, mutex_id);
 
 		phy_data->comm_owned = 1;
+		pthread_mutex_unlock(&pdata->phy_mutex);
 		return 0;
 	}
 
-- 
2.17.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help