From: Jonathan Cameron <jic23@kernel.org>
To: Gargi Sharma <gs051095@gmail.com>
Cc: outreachy-kernel@googlegroups.com, linux-iio@vger.kernel.org,
Lars-Peter Clausen <lars@metafoo.de>,
Michael Hennerich <Michael.Hennerich@analog.com>,
Hartmut Knaack <knaack.h@gmx.de>,
Peter Meerwald-Stadler <pmeerw@pmeerw.net>,
Greg KH <gregkh@linuxfoundation.org>
Subject: Re: [PATCH] staging: ade7754: Replace mlock with buf_lock and refactor code
Date: Wed, 22 Mar 2017 20:19:10 +0000 [thread overview]
Message-ID: <0175e940-d3eb-5662-2e1a-234cf7a12530@kernel.org> (raw)
In-Reply-To: <CAOCi2DGWWBNNqtE8+C1tAuXLct_5EJcjpx64WEmn1d-3qaw0zQ@mail.gmail.com>
On 21/03/17 19:52, Gargi Sharma wrote:
> On Wed, Mar 22, 2017 at 1:15 AM, Jonathan Cameron <jic23@kernel.org> wrote:
>> On 20/03/17 07:39, Gargi Sharma 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 buf_lock in the devices global data.
>>>
>>> As buf_lock already protects operations in ade7754_write_frequency,
>>> there isn't a need to acquire the lock inside ade7754_spi_write_reg_8
>>> when writing to the register.
>>>
>>> Signed-off-by: Gargi Sharma <gs051095@gmail.com>
>> Question inline.
>>> ---
>>> drivers/staging/iio/meter/ade7754.c | 13 +++++++++++--
>>> 1 file changed, 11 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/staging/iio/meter/ade7754.c b/drivers/staging/iio/meter/ade7754.c
>>> index 024463a..eb03469 100644
>>> --- a/drivers/staging/iio/meter/ade7754.c
>>> +++ b/drivers/staging/iio/meter/ade7754.c
>>> @@ -29,6 +29,15 @@ static int ade7754_spi_write_reg_8(struct device *dev, u8 reg_address, u8 val)
>>> struct iio_dev *indio_dev = dev_to_iio_dev(dev);
>>> struct ade7754_state *st = iio_priv(indio_dev);
>>>
>>> + if (reg_address == ADE7754_WAVMODE) {
>>> + st->tx[0] = ADE7754_WRITE_REG(reg_address);
>>> + st->tx[1] = val;
>>> +
>>> + ret = spi_write(st->us, st->tx, 2);
>>> +
>>> + return ret;
>>> + }
>
>> This block doesn't fit with the description. What's going on here?
>
> When the function ade_spi_write_reg_8() is called inside
> ade7754_write_frequency(), we are writing to this( ADE7754_WAVMODE)
> register. When writing to this register we don’t need to hold the
> buf_lock since ade7754_write_frequency() already takes care of that.
> This block of code does not use the buf_lock since that is taken care
> of by ade7754_write_frequency().
This strikes me as a very fragile way of coding this.
Also, unless I'm missing something, the lock taken there is still mlock...
>
> Gargi
>>> +
>>> mutex_lock(&st->buf_lock);
>>> st->tx[0] = ADE7754_WRITE_REG(reg_address);
>>> st->tx[1] = val;
>>> @@ -430,7 +439,7 @@ static ssize_t ade7754_write_frequency(struct device *dev,
>>> if (!val)
>>> return -EINVAL;
>>>
>>> - mutex_lock(&indio_dev->mlock);
>>> + mutex_lock(&st->buf_lock);
>>>
>>> t = 26000 / val;
>>> if (t > 0)
>>> @@ -451,7 +460,7 @@ static ssize_t ade7754_write_frequency(struct device *dev,
>>> ret = ade7754_spi_write_reg_8(dev, ADE7754_WAVMODE, reg);
>>>
>>> out:
>>> - mutex_unlock(&indio_dev->mlock);
>>> + mutex_unlock(&st->buf_lock);
>>>
>>> return ret ? ret : len;
>>> }
>>>
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
prev parent reply other threads:[~2017-03-22 20:19 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-20 7:39 [PATCH] staging: ade7754: Replace mlock with buf_lock and refactor code Gargi Sharma
2017-03-21 17:24 ` [Outreachy kernel] " Alison Schofield
2017-03-21 17:48 ` Gargi Sharma
2017-03-21 18:12 ` Alison Schofield
2017-03-21 18:18 ` Gargi Sharma
2017-03-21 18:54 ` Alison Schofield
2017-03-21 20:12 ` Alison Schofield
2017-03-21 19:45 ` Jonathan Cameron
2017-03-21 19:52 ` Gargi Sharma
2017-03-21 19:52 ` Gargi Sharma
2017-03-22 20:19 ` Jonathan Cameron [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0175e940-d3eb-5662-2e1a-234cf7a12530@kernel.org \
--to=jic23@kernel.org \
--cc=Michael.Hennerich@analog.com \
--cc=gregkh@linuxfoundation.org \
--cc=gs051095@gmail.com \
--cc=knaack.h@gmx.de \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=outreachy-kernel@googlegroups.com \
--cc=pmeerw@pmeerw.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.