From 9d1290f866b69b59f6da2e90b54ac37838f9cadf Mon Sep 17 00:00:00 2001 From: Lars-Peter Clausen Date: Mon, 19 Dec 2011 15:23:44 +0100 Subject: [PATCH] --- yaml --- r: 281419 b: refs/heads/master c: e38c79e0825b673d97cecfb36bae9e859e724f1b h: refs/heads/master i: 281417: 85eb6a3c639b814df7d705381ef6186bd00cbc84 281415: 39f27c009aad7d43278cfbcc18bed7f8562424b8 v: v3 --- [refs] | 2 +- trunk/drivers/staging/iio/industrialio-buffer.c | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) 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);