lkml.org 
[lkml]   [2021]   [May]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [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@linuxfoundation.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@kernel.org>
    > Link: https://lore.kernel.org/r/20210503115736.2104747-58-gregkh@linuxfoundation.org
    > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    > Signed-off-by: Sasha Levin <sashal@kernel.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
    >
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2021-05-25 16:24    [W:4.547 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site