From 8852c2a272071fcbaf1eb55c0843370050304cd1 Mon Sep 17 00:00:00 2001 From: Yingyuan Zhu Date: Wed, 29 Aug 2018 20:27:10 +0800 Subject: [PATCH] meson: adc: fix coverity warning PD#172721: meson: adc: fix coverity warning 1.Function "regmap_write" does not check the return value. 2.There's a risk of dividing by 0. 3.There is a risk of null pointer dereferencing the reference This causes "Unchecked return value" and "Division or modulo by zero". Change-Id: I10a04dbd49db2d3f3e7def18b6b9eb9f836bc9f0 Signed-off-by: Yingyuan Zhu --- drivers/amlogic/iio/adc/meson_saradc.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/amlogic/iio/adc/meson_saradc.c b/drivers/amlogic/iio/adc/meson_saradc.c index 4273d96517e2..dc58464eb710 100644 --- a/drivers/amlogic/iio/adc/meson_saradc.c +++ b/drivers/amlogic/iio/adc/meson_saradc.c @@ -861,7 +861,9 @@ static int meson_sar_adc_init(struct iio_dev *indio_dev) MESON_SAR_ADC_REG0_ADC_TEMP_SEN_SEL); /* disable all channels by default */ - regmap_write(priv->regmap, MESON_SAR_ADC_CHAN_LIST, 0x0); + ret = regmap_write(priv->regmap, MESON_SAR_ADC_CHAN_LIST, 0x0); + if (ret) + return ret; regmap_update_bits(priv->regmap, MESON_SAR_ADC_REG3, MESON_SAR_ADC_REG3_CTRL_SAMPLING_CLOCK_PHASE, 0); @@ -1186,6 +1188,8 @@ static int meson_sar_adc_buffer_postenable(struct iio_dev *indio_dev) idx++; } + if (!idx) + return -EINVAL; priv->active_channel_cnt = idx; /* @@ -1414,8 +1418,10 @@ static int meson_sar_adc_probe(struct platform_device *pdev) priv = iio_priv(indio_dev); match = of_match_device(meson_sar_adc_of_match, &pdev->dev); - priv->data = match->data; + if (!match) + return -EINVAL; + priv->data = match->data; indio_dev->name = priv->data->name; indio_dev->dev.parent = &pdev->dev; indio_dev->dev.of_node = pdev->dev.of_node;