lkml.org 
[lkml]   [2019]   [Nov]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 036/422] iio: dac: mcp4922: fix error handling in mcp4922_write_raw
    Date
    From: Marcus Folkesson <marcus.folkesson@gmail.com>

    [ Upstream commit 0833627fc3f757a0dca11e2a9c46c96335a900ee ]

    Do not try to write negative values and make sure that the write goes well.

    Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/iio/dac/mcp4922.c | 11 ++++++++---
    1 file changed, 8 insertions(+), 3 deletions(-)

    diff --git a/drivers/iio/dac/mcp4922.c b/drivers/iio/dac/mcp4922.c
    index bf9aa3fc0534e..b5190d1dae8e3 100644
    --- a/drivers/iio/dac/mcp4922.c
    +++ b/drivers/iio/dac/mcp4922.c
    @@ -94,17 +94,22 @@ static int mcp4922_write_raw(struct iio_dev *indio_dev,
    long mask)
    {
    struct mcp4922_state *state = iio_priv(indio_dev);
    + int ret;

    if (val2 != 0)
    return -EINVAL;

    switch (mask) {
    case IIO_CHAN_INFO_RAW:
    - if (val > GENMASK(chan->scan_type.realbits-1, 0))
    + if (val < 0 || val > GENMASK(chan->scan_type.realbits - 1, 0))
    return -EINVAL;
    val <<= chan->scan_type.shift;
    - state->value[chan->channel] = val;
    - return mcp4922_spi_write(state, chan->channel, val);
    +
    + ret = mcp4922_spi_write(state, chan->channel, val);
    + if (!ret)
    + state->value[chan->channel] = val;
    + return ret;
    +
    default:
    return -EINVAL;
    }
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-11-19 07:11    [W:4.029 / U:0.404 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site