Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753903AbdCMSJg (ORCPT ); Mon, 13 Mar 2017 14:09:36 -0400 Received: from mail-pg0-f68.google.com ([74.125.83.68]:36709 "EHLO mail-pg0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752211AbdCMSJU (ORCPT ); Mon, 13 Mar 2017 14:09:20 -0400 Date: Mon, 13 Mar 2017 23:41:30 +0530 From: simran singhal To: lars@metafoo.de Cc: Michael.Hennerich@analog.com, jic23@kernel.org, Hartmut Knaack , Peter Meerwald-Stadler , Greg Kroah-Hartman , linux-iio@vger.kernel.org, devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, outreachy-kernel@googlegroups.com Subject: [PATCH v3] staging: adis16060_core: Use private driver lock instead of mlock Message-ID: <20170313181130.GA27111@singhal-Inspiron-5558> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1614 Lines: 54 The IIO subsystem is redefining iio_dev->mlock to be used by the IIO core only for protecting device operating mode changes. ie. Changes between INDIO_DIRECT_MODE, INDIO_BUFFER_* modes. In this driver, mlock was being used to protect hardware state changes. Replace it with a lock in the devices global data. Signed-off-by: simran singhal --- v3: -Removed new lock to reuse the existing lock drivers/staging/iio/gyro/adis16060_core.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/staging/iio/gyro/adis16060_core.c b/drivers/staging/iio/gyro/adis16060_core.c index c9d46e7..602ec53 100644 --- a/drivers/staging/iio/gyro/adis16060_core.c +++ b/drivers/staging/iio/gyro/adis16060_core.c @@ -83,11 +83,12 @@ static int adis16060_read_raw(struct iio_dev *indio_dev, { u16 tval = 0; int ret; + struct adis16060_state *st = iio_priv(indio_dev); switch (mask) { case IIO_CHAN_INFO_RAW: /* Take the iio_dev status lock */ - mutex_lock(&indio_dev->mlock); + mutex_lock(&st->buf_lock); ret = adis16060_spi_write(indio_dev, chan->address); if (ret < 0) goto out_unlock; @@ -96,7 +97,7 @@ static int adis16060_read_raw(struct iio_dev *indio_dev, if (ret < 0) goto out_unlock; - mutex_unlock(&indio_dev->mlock); + mutex_unlock(&st->buf_lock); *val = tval; return IIO_VAL_INT; case IIO_CHAN_INFO_OFFSET: @@ -112,7 +113,7 @@ static int adis16060_read_raw(struct iio_dev *indio_dev, return -EINVAL; out_unlock: - mutex_unlock(&indio_dev->mlock); + mutex_unlock(&st->buf_lock); return ret; } -- 2.7.4