In function mx25_gcq_irq(), local variable "stats" could be uninitialized if function regmap_read() returns -EINVAL. However, this value is used in if statement, which is potentially unsafe. The same case applied to the variable "data" in function mx25_gcq_get_raw_value() in the same file. Signed-off-by: Yizhuo <yzhai003@xxxxxxx> --- drivers/iio/adc/fsl-imx25-gcq.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/iio/adc/fsl-imx25-gcq.c b/drivers/iio/adc/fsl-imx25-gcq.c index fa71489195c6..3b1e12b7c1ac 100644 --- a/drivers/iio/adc/fsl-imx25-gcq.c +++ b/drivers/iio/adc/fsl-imx25-gcq.c @@ -73,8 +73,12 @@ static irqreturn_t mx25_gcq_irq(int irq, void *data) { struct mx25_gcq_priv *priv = data; u32 stats; + int ret; - regmap_read(priv->regs, MX25_ADCQ_SR, &stats); + ret = regmap_read(priv->regs, MX25_ADCQ_SR, &stats); + if (ret) { + return ret; + } if (stats & MX25_ADCQ_SR_EOQ) { regmap_update_bits(priv->regs, MX25_ADCQ_MR, @@ -100,6 +104,7 @@ static int mx25_gcq_get_raw_value(struct device *dev, { long timeout; u32 data; + int ret; /* Setup the configuration we want to use */ regmap_write(priv->regs, MX25_ADCQ_ITEM_7_0, @@ -121,7 +126,11 @@ static int mx25_gcq_get_raw_value(struct device *dev, return -ETIMEDOUT; } - regmap_read(priv->regs, MX25_ADCQ_FIFO, &data); + ret = regmap_read(priv->regs, MX25_ADCQ_FIFO, &data); + if (ret) { + dev_err(dev, "Failed to read MX25_ADCQ_FIFO.\n"); + return ret; + } *val = MX25_ADCQ_FIFO_DATA(data); -- 2.17.1