Re: [PATCH 2/2] mfd: tps65217: Check return value when masking interrupt sources

From: Andreas Kemnade

Date: Fri Aug 21 2026 - 07:58:35 EST


On Fri, 21 Aug 2026 07:54:02 +0000
Жамбакиев Радий Рикардинович <r.zhambakiev@xxxxxxxxxxxxxxxxx> wrote:

> tps65217_irq_init() ignores the error returned by
> tps65217_set_bits() when masking all interrupt sources. A failed
> register write leaves the driver's software mask out of sync with the
> hardware and may result in spurious interrupts.
>
> Check the return value and propagate the error to the caller.
>
> Found by Linux Verification Center (linuxtesting.org) with SVACE.
>
> Fixes: 6556bdacf646fcaa ("mfd: tps65217: Add support for IRQs")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Radiy Zhambakiev <r.zhambakiev@xxxxxxxxxxxxxxxxx>

Reviewed-by: Andreas Kemnade <andreas@xxxxxxxxxxxx>

> ---
> drivers/mfd/tps65217.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mfd/tps65217.c b/drivers/mfd/tps65217.c
> index 2d04d9e0ae29..9a1528456ffc 100644
> --- a/drivers/mfd/tps65217.c
> +++ b/drivers/mfd/tps65217.c
> @@ -155,8 +155,13 @@ static int tps65217_irq_init(struct tps65217 *tps, int irq)
>
> /* Mask all interrupt sources */
> tps->irq_mask = TPS65217_INT_MASK;
> - tps65217_set_bits(tps, TPS65217_REG_INT, TPS65217_INT_MASK,
> - TPS65217_INT_MASK, TPS65217_PROTECT_NONE);
> + ret = tps65217_set_bits(tps, TPS65217_REG_INT, TPS65217_INT_MASK,
> + TPS65217_INT_MASK, TPS65217_PROTECT_NONE);
> + if (ret) {
> + dev_err(tps->dev, "Failed to mask interrupt sources: %d\n",
> + ret);
> + return ret;
> + }
>
> tps->irq_domain = irq_domain_create_linear(dev_fwnode(tps->dev), TPS65217_NUM_IRQ,
> &tps65217_irq_domain_ops, tps);