From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757335AbcJ3Sn2 (ORCPT ); Sun, 30 Oct 2016 14:43:28 -0400 Received: from saturn.retrosnub.co.uk ([178.18.118.26]:43615 "EHLO saturn.retrosnub.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753299AbcJ3Sn0 (ORCPT ); Sun, 30 Oct 2016 14:43:26 -0400 Subject: Re: [PATCH 10/10] staging: iio: tsl2583: add locking to sysfs attributes To: Brian Masney , linux-iio@vger.kernel.org References: <1477648821-3786-1-git-send-email-masneyb@onstation.org> <1477648821-3786-11-git-send-email-masneyb@onstation.org> Cc: devel@driverdev.osuosl.org, gregkh@linuxfoundation.org, lars@metafoo.de, pmeerw@pmeerw.net, knaack.h@gmx.de, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, robh+dt@kernel.org, Mark.Rutland@arm.com From: Jonathan Cameron Message-ID: <8c1d39df-d9ff-95ca-570f-8b3a80375796@kernel.org> Date: Sun, 30 Oct 2016 18:43:23 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <1477648821-3786-11-git-send-email-masneyb@onstation.org> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 28/10/16 11:00, Brian Masney wrote: > in_illuminance_input_target_show(), in_illuminance_input_target_store(), > in_illuminance_calibrate_store(), and in_illuminance_lux_table_store() > accesses data from the tsl2583_chip struct. Some of these fields can be > modified by other parts of the driver concurrently. This patch adds the > mutex locking to these sysfs attributes. > > Signed-off-by: Brian Masney Applied to the togreg branch of iio.git and pushed out as testing for the autobuilders to play with it. Some elements of this were probably a little over paranoid but in theory you might get a wrong reading (compared to what the hardware is set to) so fair enough. Good patch set. Thanks, Jonathan > --- > drivers/staging/iio/light/tsl2583.c | 16 +++++++++++++++- > 1 file changed, 15 insertions(+), 1 deletion(-) > > diff --git a/drivers/staging/iio/light/tsl2583.c b/drivers/staging/iio/light/tsl2583.c > index 98afa5b..49b19f5 100644 > --- a/drivers/staging/iio/light/tsl2583.c > +++ b/drivers/staging/iio/light/tsl2583.c > @@ -513,8 +513,13 @@ static ssize_t in_illuminance_input_target_show(struct device *dev, > { > struct iio_dev *indio_dev = dev_to_iio_dev(dev); > struct tsl2583_chip *chip = iio_priv(indio_dev); > + int ret; > + > + mutex_lock(&chip->als_mutex); > + ret = sprintf(buf, "%d\n", chip->taos_settings.als_cal_target); > + mutex_unlock(&chip->als_mutex); > > - return sprintf(buf, "%d\n", chip->taos_settings.als_cal_target); > + return ret; > } > > static ssize_t in_illuminance_input_target_store(struct device *dev, > @@ -528,7 +533,9 @@ static ssize_t in_illuminance_input_target_store(struct device *dev, > if (kstrtoint(buf, 0, &value) || !value) > return -EINVAL; > > + mutex_lock(&chip->als_mutex); > chip->taos_settings.als_cal_target = value; > + mutex_unlock(&chip->als_mutex); > > return len; > } > @@ -538,12 +545,15 @@ static ssize_t in_illuminance_calibrate_store(struct device *dev, > const char *buf, size_t len) > { > struct iio_dev *indio_dev = dev_to_iio_dev(dev); > + struct tsl2583_chip *chip = iio_priv(indio_dev); > int value; > > if (kstrtoint(buf, 0, &value) || value != 1) > return -EINVAL; > > + mutex_lock(&chip->als_mutex); > taos_als_calibrate(indio_dev); > + mutex_unlock(&chip->als_mutex); > > return len; > } > @@ -583,6 +593,8 @@ static ssize_t in_illuminance_lux_table_store(struct device *dev, > int value[ARRAY_SIZE(taos_device_lux) * 3 + 1]; > int n, ret = -EINVAL; > > + mutex_lock(&chip->als_mutex); > + > get_options(buf, ARRAY_SIZE(value), value); > > /* We now have an array of ints starting at value[1], and > @@ -617,6 +629,8 @@ static ssize_t in_illuminance_lux_table_store(struct device *dev, > ret = len; > > done: > + mutex_unlock(&chip->als_mutex); > + > return ret; > } > > From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jonathan Cameron Subject: Re: [PATCH 10/10] staging: iio: tsl2583: add locking to sysfs attributes Date: Sun, 30 Oct 2016 18:43:23 +0000 Message-ID: <8c1d39df-d9ff-95ca-570f-8b3a80375796@kernel.org> References: <1477648821-3786-1-git-send-email-masneyb@onstation.org> <1477648821-3786-11-git-send-email-masneyb@onstation.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1477648821-3786-11-git-send-email-masneyb@onstation.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" To: Brian Masney , linux-iio@vger.kernel.org Cc: devel@driverdev.osuosl.org, devicetree@vger.kernel.org, lars@metafoo.de, gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, robh+dt@kernel.org, pmeerw@pmeerw.net, knaack.h@gmx.de, Mark.Rutland@arm.com List-Id: devicetree@vger.kernel.org On 28/10/16 11:00, Brian Masney wrote: > in_illuminance_input_target_show(), in_illuminance_input_target_store(), > in_illuminance_calibrate_store(), and in_illuminance_lux_table_store() > accesses data from the tsl2583_chip struct. Some of these fields can be > modified by other parts of the driver concurrently. This patch adds the > mutex locking to these sysfs attributes. > > Signed-off-by: Brian Masney Applied to the togreg branch of iio.git and pushed out as testing for the autobuilders to play with it. Some elements of this were probably a little over paranoid but in theory you might get a wrong reading (compared to what the hardware is set to) so fair enough. Good patch set. Thanks, Jonathan > --- > drivers/staging/iio/light/tsl2583.c | 16 +++++++++++++++- > 1 file changed, 15 insertions(+), 1 deletion(-) > > diff --git a/drivers/staging/iio/light/tsl2583.c b/drivers/staging/iio/light/tsl2583.c > index 98afa5b..49b19f5 100644 > --- a/drivers/staging/iio/light/tsl2583.c > +++ b/drivers/staging/iio/light/tsl2583.c > @@ -513,8 +513,13 @@ static ssize_t in_illuminance_input_target_show(struct device *dev, > { > struct iio_dev *indio_dev = dev_to_iio_dev(dev); > struct tsl2583_chip *chip = iio_priv(indio_dev); > + int ret; > + > + mutex_lock(&chip->als_mutex); > + ret = sprintf(buf, "%d\n", chip->taos_settings.als_cal_target); > + mutex_unlock(&chip->als_mutex); > > - return sprintf(buf, "%d\n", chip->taos_settings.als_cal_target); > + return ret; > } > > static ssize_t in_illuminance_input_target_store(struct device *dev, > @@ -528,7 +533,9 @@ static ssize_t in_illuminance_input_target_store(struct device *dev, > if (kstrtoint(buf, 0, &value) || !value) > return -EINVAL; > > + mutex_lock(&chip->als_mutex); > chip->taos_settings.als_cal_target = value; > + mutex_unlock(&chip->als_mutex); > > return len; > } > @@ -538,12 +545,15 @@ static ssize_t in_illuminance_calibrate_store(struct device *dev, > const char *buf, size_t len) > { > struct iio_dev *indio_dev = dev_to_iio_dev(dev); > + struct tsl2583_chip *chip = iio_priv(indio_dev); > int value; > > if (kstrtoint(buf, 0, &value) || value != 1) > return -EINVAL; > > + mutex_lock(&chip->als_mutex); > taos_als_calibrate(indio_dev); > + mutex_unlock(&chip->als_mutex); > > return len; > } > @@ -583,6 +593,8 @@ static ssize_t in_illuminance_lux_table_store(struct device *dev, > int value[ARRAY_SIZE(taos_device_lux) * 3 + 1]; > int n, ret = -EINVAL; > > + mutex_lock(&chip->als_mutex); > + > get_options(buf, ARRAY_SIZE(value), value); > > /* We now have an array of ints starting at value[1], and > @@ -617,6 +629,8 @@ static ssize_t in_illuminance_lux_table_store(struct device *dev, > ret = len; > > done: > + mutex_unlock(&chip->als_mutex); > + > return ret; > } > >