提交 06ee60eb 编写于 作者: D Dan Carpenter 提交者: Jonathan Cameron

iio: adc: max1027: unlock on error path in max1027_read_single_value()

If max1027_wait_eoc() fails then call iio_device_release_direct_mode()
before returning.

Fixes: a0e83165 ("iio: adc: max1027: Introduce an end of conversion helper")
Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com>
Link: https://lore.kernel.org/r/YsbztVuAXnau2cIZ@kiliSigned-off-by: NJonathan Cameron <Jonathan.Cameron@huawei.com>
上级 7aa68dcc
...@@ -349,8 +349,7 @@ static int max1027_read_single_value(struct iio_dev *indio_dev, ...@@ -349,8 +349,7 @@ static int max1027_read_single_value(struct iio_dev *indio_dev,
if (ret < 0) { if (ret < 0) {
dev_err(&indio_dev->dev, dev_err(&indio_dev->dev,
"Failed to configure conversion register\n"); "Failed to configure conversion register\n");
iio_device_release_direct_mode(indio_dev); goto release;
return ret;
} }
/* /*
...@@ -360,11 +359,12 @@ static int max1027_read_single_value(struct iio_dev *indio_dev, ...@@ -360,11 +359,12 @@ static int max1027_read_single_value(struct iio_dev *indio_dev,
*/ */
ret = max1027_wait_eoc(indio_dev); ret = max1027_wait_eoc(indio_dev);
if (ret) if (ret)
return ret; goto release;
/* Read result */ /* Read result */
ret = spi_read(st->spi, st->buffer, (chan->type == IIO_TEMP) ? 4 : 2); ret = spi_read(st->spi, st->buffer, (chan->type == IIO_TEMP) ? 4 : 2);
release:
iio_device_release_direct_mode(indio_dev); iio_device_release_direct_mode(indio_dev);
if (ret < 0) if (ret < 0)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册