diff --git a/[refs] b/[refs] index cc933ab77986..a7a73418a142 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5fd6218ca5928e4b59eb8a496aa1428fae1fb0d6 +refs/heads/master: e38c79e0825b673d97cecfb36bae9e859e724f1b diff --git a/trunk/drivers/staging/iio/industrialio-buffer.c b/trunk/drivers/staging/iio/industrialio-buffer.c index 747b9013a666..59472890cb2a 100644 --- a/trunk/drivers/staging/iio/industrialio-buffer.c +++ b/trunk/drivers/staging/iio/industrialio-buffer.c @@ -396,13 +396,20 @@ ssize_t iio_buffer_write_length(struct device *dev, if (val == buffer->access->get_length(buffer)) return len; - if (buffer->access->set_length) { - buffer->access->set_length(buffer, val); - if (buffer->access->mark_param_change) - buffer->access->mark_param_change(buffer); + mutex_lock(&indio_dev->mlock); + if (iio_buffer_enabled(indio_dev)) { + ret = -EBUSY; + } else { + if (buffer->access->set_length) { + buffer->access->set_length(buffer, val); + if (buffer->access->mark_param_change) + buffer->access->mark_param_change(buffer); + } + ret = 0; } + mutex_unlock(&indio_dev->mlock); - return len; + return ret ? ret : len; } EXPORT_SYMBOL(iio_buffer_write_length);