Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754193AbdCMTal (ORCPT ); Mon, 13 Mar 2017 15:30:41 -0400 Received: from mail-pg0-f67.google.com ([74.125.83.67]:34892 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751662AbdCMTae (ORCPT ); Mon, 13 Mar 2017 15:30:34 -0400 Date: Mon, 13 Mar 2017 12:30:04 -0700 From: Alison Schofield To: simran singhal Cc: lars@metafoo.de, 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: Re: [Outreachy kernel] [PATCH v3] staging: adis16060_core: Use private driver lock instead of mlock Message-ID: <20170313193003.GB5941@d830.WORKGROUP> References: <20170313181130.GA27111@singhal-Inspiron-5558> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170313181130.GA27111@singhal-Inspiron-5558> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2575 Lines: 75 On Mon, Mar 13, 2017 at 11:41:30PM +0530, simran singhal wrote: > 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 Hi Simran, Check Lars review comments about refactoring into a write_then_read function protected by same buf_lock. As it is now, it'll deadlock on buf_lock. It locks in _read_raw and then calls _spi_write where an attempt is made to grab the same lock. alisons > > 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 > > -- > You received this message because you are subscribed to the Google Groups "outreachy-kernel" group. > To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com. > To post to this group, send email to outreachy-kernel@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/20170313181130.GA27111%40singhal-Inspiron-5558. > For more options, visit https://groups.google.com/d/optout.