lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <fqhldiqylcsp6kp4tvhopxekgszabbemnvbseygkqaipgp5mhl@wtz6c7kjloko>
Date: Tue, 16 Sep 2025 11:09:07 -0700
From: Dmitry Torokhov <dmitry.torokhov@...il.com>
To: Alexander Kurz <akurz@...la.de>
Cc: Lee Jones <lee@...nel.org>, Rob Herring <robh@...nel.org>, 
	Krzysztof Kozlowski <krzk+dt@...nel.org>, Conor Dooley <conor+dt@...nel.org>, 
	Dzmitry Sankouski <dsankouski@...il.com>, "Dr. David Alan Gilbert" <linux@...blig.org>, 
	Heiko Stuebner <heiko@...ech.de>, Uwe Kleine-König <u.kleine-koenig@...libre.com>, 
	devicetree@...r.kernel.org, linux-input@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v4 4/8] mfd: mc13xxx: Use devm_mfd_add_devices and
 devm_regmap_add_irq_chip

Hi Alexander,

On Sun, Sep 14, 2025 at 07:37:19PM +0000, Alexander Kurz wrote:
> Use devm_mfd_add_devices() for adding MFD child devices and
> devm_regmap_add_irq_chip() for IRQ chip registration.
> 
> This reduces the amount of required cleanup.
> 
> Signed-off-by: Alexander Kurz <akurz@...la.de>
> ---
>  drivers/mfd/mc13xxx-core.c | 9 ++++-----
>  1 file changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/mfd/mc13xxx-core.c b/drivers/mfd/mc13xxx-core.c
> index 920797b806ce..091c9171b2b7 100644
> --- a/drivers/mfd/mc13xxx-core.c
> +++ b/drivers/mfd/mc13xxx-core.c
> @@ -381,7 +381,7 @@ static int mc13xxx_add_subdevice_pdata(struct mc13xxx *mc13xxx,
>  	if (!cell.name)
>  		return -ENOMEM;
>  
> -	return mfd_add_devices(mc13xxx->dev, -1, &cell, 1, NULL, 0,
> +	return devm_mfd_add_devices(mc13xxx->dev, -1, &cell, 1, NULL, 0,
>  			       regmap_irq_get_domain(mc13xxx->irq_data));
>  }
>  
> @@ -455,8 +455,9 @@ int mc13xxx_common_init(struct device *dev)
>  	mc13xxx->irq_chip.irqs = mc13xxx->irqs;
>  	mc13xxx->irq_chip.num_irqs = ARRAY_SIZE(mc13xxx->irqs);
>  
> -	ret = regmap_add_irq_chip(mc13xxx->regmap, mc13xxx->irq, IRQF_ONESHOT,
> -				  0, &mc13xxx->irq_chip, &mc13xxx->irq_data);
> +	ret = devm_regmap_add_irq_chip(dev, mc13xxx->regmap, mc13xxx->irq,
> +				       IRQF_ONESHOT, 0, &mc13xxx->irq_chip,
> +				       &mc13xxx->irq_data);
>  	if (ret)
>  		return ret;
>  
> @@ -502,8 +503,6 @@ void mc13xxx_common_exit(struct device *dev)
>  {
>  	struct mc13xxx *mc13xxx = dev_get_drvdata(dev);
>  
> -	mfd_remove_devices(dev);
> -	regmap_del_irq_chip(mc13xxx->irq, mc13xxx->irq_data);
>  	mutex_destroy(&mc13xxx->lock);

This causes the mutex be destroyed while the sub-devices are still
present. The power button will try to call mc13xxx_lock() and
mc13xxx_unlock() and of mutex debugging is enabled you'll get errors.

I'd remove mutex_destroy() as well (and transitively get rid of 
mc13xxx_common_exit()) and then look into getting rid of  mc13xxx_lock()
and mc13xxx_unlock() because, as I mentioned in another email, they are
IMO not needed.

But this version of the patch is broken as far as I can tell.

Thanks.

-- 
Dmitry

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ