net/axgbe: fix protential unreleased lock problem in axgbe_i2c_xfer
Checks
Commit Message
The lock pdata->i2c_mutex is not released if the function return in these two patched branches, which may lead to deadlock problem if this lock is acuired again. The patch is to fix this problem.
Cc: cyeaa@connect.ust.hk
Bugzilla ID: 777
Signed-off-by: Chengfeng Ye <cyeaa@connect.ust.hk>
---
drivers/net/axgbe/axgbe_i2c.c | 2 ++
1 file changed, 2 insertions(+)
@@ -233,6 +233,7 @@ static int axgbe_i2c_xfer(struct axgbe_port *pdata, struct axgbe_i2c_op *op)
ret = axgbe_i2c_disable(pdata);
if (ret) {
PMD_DRV_LOG(ERR, "failed to disable i2c master\n");
+ pthread_mutex_unlock(&pdata->i2c_mutex);
return ret;
}
@@ -249,6 +250,7 @@ static int axgbe_i2c_xfer(struct axgbe_port *pdata, struct axgbe_i2c_op *op)
ret = axgbe_i2c_enable(pdata);
if (ret) {
PMD_DRV_LOG(ERR, "failed to enable i2c master\n");
+ pthread_mutex_unlock(&pdata->i2c_mutex);
return ret;
}