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]
Date:   Tue, 25 May 2021 15:00:28 +0100
From:   Mark Brown <broonie@...nel.org>
To:     Sasha Levin <sashal@...nel.org>
Cc:     linux-kernel@...r.kernel.org, stable@...r.kernel.org,
        Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
        alsa-devel@...a-project.org, patches@...nsource.cirrus.com
Subject: Re: [PATCH AUTOSEL 5.12 32/63] ASoC: cs43130: handle errors in
 cs43130_probe() properly

On Mon, May 24, 2021 at 10:45:49AM -0400, Sasha Levin wrote:
> From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
> 
> [ Upstream commit 2da441a6491d93eff8ffff523837fd621dc80389 ]
> 
> cs43130_probe() does not do any valid error checking of things it
> initializes, OR what it does, it does not unwind properly if there are
> errors.

I don't have this commit and can't see any sign of it having been
submitted upstream.  Where is it being backported from?  The last
commit I can see in -next to this driver is
d2912cb15bdda8ba4a5dd73396ad62641af2f520 (treewide: Replace GPLv2
boilerplate/reference with SPDX - rule 500) from 2019.

> 
> Fix this up by moving the sysfs files to an attribute group so the
> driver core will correctly add/remove them all at once and handle errors
> with them, and correctly check for creating a new workqueue and
> unwinding if that fails.
> 
> Cc: Mark Brown <broonie@...nel.org>
> Link: https://lore.kernel.org/r/20210503115736.2104747-58-gregkh@linuxfoundation.org
> Signed-off-by: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
> Signed-off-by: Sasha Levin <sashal@...nel.org>
> ---
>  sound/soc/codecs/cs43130.c | 28 ++++++++++++++--------------
>  1 file changed, 14 insertions(+), 14 deletions(-)
> 
> diff --git a/sound/soc/codecs/cs43130.c b/sound/soc/codecs/cs43130.c
> index c2b6f0ae6d57..80cd3ea0c157 100644
> --- a/sound/soc/codecs/cs43130.c
> +++ b/sound/soc/codecs/cs43130.c
> @@ -1735,6 +1735,14 @@ static DEVICE_ATTR(hpload_dc_r, 0444, cs43130_show_dc_r, NULL);
>  static DEVICE_ATTR(hpload_ac_l, 0444, cs43130_show_ac_l, NULL);
>  static DEVICE_ATTR(hpload_ac_r, 0444, cs43130_show_ac_r, NULL);
>  
> +static struct attribute *hpload_attrs[] = {
> +	&dev_attr_hpload_dc_l.attr,
> +	&dev_attr_hpload_dc_r.attr,
> +	&dev_attr_hpload_ac_l.attr,
> +	&dev_attr_hpload_ac_r.attr,
> +};
> +ATTRIBUTE_GROUPS(hpload);
> +
>  static struct reg_sequence hp_en_cal_seq[] = {
>  	{CS43130_INT_MASK_4, CS43130_INT_MASK_ALL},
>  	{CS43130_HP_MEAS_LOAD_1, 0},
> @@ -2302,23 +2310,15 @@ static int cs43130_probe(struct snd_soc_component *component)
>  
>  	cs43130->hpload_done = false;
>  	if (cs43130->dc_meas) {
> -		ret = device_create_file(component->dev, &dev_attr_hpload_dc_l);
> -		if (ret < 0)
> -			return ret;
> -
> -		ret = device_create_file(component->dev, &dev_attr_hpload_dc_r);
> -		if (ret < 0)
> -			return ret;
> -
> -		ret = device_create_file(component->dev, &dev_attr_hpload_ac_l);
> -		if (ret < 0)
> -			return ret;
> -
> -		ret = device_create_file(component->dev, &dev_attr_hpload_ac_r);
> -		if (ret < 0)
> +		ret = sysfs_create_groups(&component->dev->kobj, hpload_groups);
> +		if (ret)
>  			return ret;
>  
>  		cs43130->wq = create_singlethread_workqueue("cs43130_hp");
> +		if (!cs43130->wq) {
> +			sysfs_remove_groups(&component->dev->kobj, hpload_groups);
> +			return -ENOMEM;
> +		}
>  		INIT_WORK(&cs43130->work, cs43130_imp_meas);
>  	}
>  
> -- 
> 2.30.2
> 

Download attachment "signature.asc" of type "application/pgp-signature" (489 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ