drivers/staging/iio: call mutex_unlock in error handling code
Adjust the error handling code so that it benefits from the call to mutex_unlock at the end of the function. The semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @rcu exists@ position p1; expression E; @@ mutex_lock@p1(E); ... mutex_unlock(E); @exists@ position rcu.p1; expression E; @@ *mutex_lock@p1(E); ... when != mutex_unlock(E); ?*return ...; // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Acked-by: Jonathan Cameron <jic23@cam.ac.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
e3a92cdedf
commit
d1ae4da731
|
@ -220,11 +220,15 @@ static ssize_t hmc5843_set_operating_mode(struct device *dev,
|
||||||
int error;
|
int error;
|
||||||
mutex_lock(&data->lock);
|
mutex_lock(&data->lock);
|
||||||
error = strict_strtoul(buf, 10, &operating_mode);
|
error = strict_strtoul(buf, 10, &operating_mode);
|
||||||
if (error)
|
if (error) {
|
||||||
return error;
|
count = error;
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
dev_dbg(dev, "set Conversion mode to %lu\n", operating_mode);
|
dev_dbg(dev, "set Conversion mode to %lu\n", operating_mode);
|
||||||
if (operating_mode > MODE_SLEEP)
|
if (operating_mode > MODE_SLEEP) {
|
||||||
return -EINVAL;
|
count = -EINVAL;
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
|
||||||
status = i2c_smbus_write_byte_data(client, this_attr->address,
|
status = i2c_smbus_write_byte_data(client, this_attr->address,
|
||||||
operating_mode);
|
operating_mode);
|
||||||
|
@ -437,18 +441,23 @@ static ssize_t set_range(struct device *dev,
|
||||||
int error;
|
int error;
|
||||||
mutex_lock(&data->lock);
|
mutex_lock(&data->lock);
|
||||||
error = strict_strtoul(buf, 10, &range);
|
error = strict_strtoul(buf, 10, &range);
|
||||||
if (error)
|
if (error) {
|
||||||
return error;
|
count = error;
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
dev_dbg(dev, "set range to %lu\n", range);
|
dev_dbg(dev, "set range to %lu\n", range);
|
||||||
|
|
||||||
if (range > RANGE_6_5)
|
if (range > RANGE_6_5) {
|
||||||
return -EINVAL;
|
count = -EINVAL;
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
|
||||||
data->range = range;
|
data->range = range;
|
||||||
range = range << RANGE_GAIN_OFFSET;
|
range = range << RANGE_GAIN_OFFSET;
|
||||||
if (i2c_smbus_write_byte_data(client, this_attr->address, range))
|
if (i2c_smbus_write_byte_data(client, this_attr->address, range))
|
||||||
count = -EINVAL;
|
count = -EINVAL;
|
||||||
|
|
||||||
|
exit:
|
||||||
mutex_unlock(&data->lock);
|
mutex_unlock(&data->lock);
|
||||||
return count;
|
return count;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue