Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aa6b707c authored by Markus Elfring's avatar Markus Elfring Committed by Jonathan Cameron
Browse files

staging: iio: ad7746: Improve unlocking of a mutex in ad7746_start_calib()



* Add a jump target so that a call of the function "mutex_unlock" is stored
  only twice in this function implementation.

* Replace two calls by goto statements.

This issue was detected by using the Coccinelle software.

Signed-off-by: default avatarMarkus Elfring <elfring@users.sourceforge.net>
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 71e083aa
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -302,23 +302,24 @@ static inline ssize_t ad7746_start_calib(struct device *dev,
	mutex_lock(&chip->lock);
	regval |= chip->config;
	ret = i2c_smbus_write_byte_data(chip->client, AD7746_REG_CFG, regval);
	if (ret < 0) {
		mutex_unlock(&chip->lock);
		return ret;
	}
	if (ret < 0)
		goto unlock;

	do {
		msleep(20);
		ret = i2c_smbus_read_byte_data(chip->client, AD7746_REG_CFG);
		if (ret < 0) {
			mutex_unlock(&chip->lock);
			return ret;
		}
		if (ret < 0)
			goto unlock;

	} while ((ret == regval) && timeout--);

	mutex_unlock(&chip->lock);

	return len;

unlock:
	mutex_unlock(&chip->lock);
	return ret;
}

static ssize_t ad7746_start_offset_calib(struct device *dev,