2019-04-09 11:28:39

by Viorel Suman

[permalink] [raw]
Subject: [PATCH v2 0/3] ASoC: fsl: audmix: remove "model" attribute and fix ref leaks

The latest audmix patch-set (v5) had the "model" attribute removed as
requested by Nicolin Chen, but looks like (v4) version of DAI driver
reached "for-next" branch - fix this by removing "model" attribute.
Asside of this fix object reference leaks in machine probe reported by
Julia Lawall.

Viorel Suman (3):
ASoC: fsl_audmix: remove "model" attribute
dt-bindings: fsl,audmix: remove "model" attribute
ASoC: imx-audmix: fix object reference leaks in probe

Changes since V1:
a) Removed "model" attribute from dt-bindings documentation
b) Adressed Daniel's comments

.../devicetree/bindings/sound/fsl,audmix.txt | 4 --
sound/soc/fsl/fsl_audmix.c | 43 ++++++++++++----------
sound/soc/fsl/imx-audmix.c | 4 ++
3 files changed, 27 insertions(+), 24 deletions(-)

--
2.7.4


2019-04-09 11:28:47

by Viorel Suman

[permalink] [raw]
Subject: [PATCH v2 3/3] ASoC: imx-audmix: fix object reference leaks in probe

Release the reference to the underlying device taken
by of_find_device_by_node() call.

Signed-off-by: Viorel Suman <[email protected]>
Reported-by: Julia Lawall <[email protected]>
---
sound/soc/fsl/imx-audmix.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/sound/soc/fsl/imx-audmix.c b/sound/soc/fsl/imx-audmix.c
index 7983bd3..9aaf3e5 100644
--- a/sound/soc/fsl/imx-audmix.c
+++ b/sound/soc/fsl/imx-audmix.c
@@ -171,6 +171,7 @@ static int imx_audmix_probe(struct platform_device *pdev)
np->full_name);
return -EINVAL;
}
+ put_device(&audmix_pdev->dev);

num_dai = of_count_phandle_with_args(audmix_np, "dais", NULL);
if (num_dai != FSL_AUDMIX_MAX_DAIS) {
@@ -216,6 +217,7 @@ static int imx_audmix_probe(struct platform_device *pdev)
dev_err(&pdev->dev, "failed to find SAI platform device\n");
return -EINVAL;
}
+ put_device(&cpu_pdev->dev);

dai_name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s%s",
fe_name_pref, args.np->full_name + 1);
@@ -280,6 +282,8 @@ static int imx_audmix_probe(struct platform_device *pdev)
dev_err(&pdev->dev, "failed to find SAI platform device\n");
return -EINVAL;
}
+ put_device(&cpu_pdev->dev);
+
priv->cpu_mclk = devm_clk_get(&cpu_pdev->dev, "mclk1");
if (IS_ERR(priv->cpu_mclk)) {
ret = PTR_ERR(priv->cpu_mclk);
--
2.7.4

2019-04-09 11:28:54

by Viorel Suman

[permalink] [raw]
Subject: [PATCH v2 2/3] dt-bindings: fsl,audmix: remove "model" attribute

Remove "model" attribute.

Signed-off-by: Viorel Suman <[email protected]>
---
Documentation/devicetree/bindings/sound/fsl,audmix.txt | 4 ----
1 file changed, 4 deletions(-)

diff --git a/Documentation/devicetree/bindings/sound/fsl,audmix.txt b/Documentation/devicetree/bindings/sound/fsl,audmix.txt
index 45f807e..840b7e0 100644
--- a/Documentation/devicetree/bindings/sound/fsl,audmix.txt
+++ b/Documentation/devicetree/bindings/sound/fsl,audmix.txt
@@ -38,9 +38,6 @@ Device driver required properties:
to SAI interfaces to be provided, the first SAI in the
list being used to route the AUDMIX output.

- - model : Must contain machine driver name which will configure
- and instantiate the appropriate audio card.
-
Device driver configuration example:
======================================
audmix: audmix@59840000 {
@@ -50,5 +47,4 @@ Device driver configuration example:
clock-names = "ipg";
power-domains = <&pd_audmix>;
dais = <&sai4>, <&sai5>;
- model = "imx-audmix";
};
--
2.7.4

2019-04-09 11:29:55

by Viorel Suman

[permalink] [raw]
Subject: [PATCH v2 1/3] ASoC: fsl_audmix: remove "model" attribute

Use "of_device_id.data" to specify the machine driver
instead of "model" DTS attribute.

Signed-off-by: Viorel Suman <[email protected]>
---
sound/soc/fsl/fsl_audmix.c | 43 +++++++++++++++++++++++--------------------
1 file changed, 23 insertions(+), 20 deletions(-)

diff --git a/sound/soc/fsl/fsl_audmix.c b/sound/soc/fsl/fsl_audmix.c
index dabde03..dc802d5 100644
--- a/sound/soc/fsl/fsl_audmix.c
+++ b/sound/soc/fsl/fsl_audmix.c
@@ -445,13 +445,29 @@ static const struct regmap_config fsl_audmix_regmap_config = {
.cache_type = REGCACHE_FLAT,
};

+static const struct of_device_id fsl_audmix_ids[] = {
+ {
+ .compatible = "fsl,imx8qm-audmix",
+ .data = "imx-audmix",
+ },
+ { /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, fsl_audmix_ids);
+
static int fsl_audmix_probe(struct platform_device *pdev)
{
struct fsl_audmix *priv;
struct resource *res;
+ const char *mdrv;
+ const struct of_device_id *of_id;
void __iomem *regs;
int ret;
- const char *sprop;
+
+ of_id = of_match_device(fsl_audmix_ids, &pdev->dev);
+ if (!of_id || !of_id->data)
+ return -EINVAL;
+
+ mdrv = of_id->data;

priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
@@ -487,19 +503,12 @@ static int fsl_audmix_probe(struct platform_device *pdev)
return ret;
}

- sprop = of_get_property(pdev->dev.of_node, "model", NULL);
- if (sprop) {
- priv->pdev = platform_device_register_data(&pdev->dev, sprop, 0,
- NULL, 0);
- if (IS_ERR(priv->pdev)) {
- ret = PTR_ERR(priv->pdev);
- dev_err(&pdev->dev,
- "failed to register platform %s: %d\n", sprop,
- ret);
- }
- } else {
- dev_err(&pdev->dev, "[model] attribute missing.\n");
- ret = -EINVAL;
+ priv->pdev = platform_device_register_data(&pdev->dev, mdrv, 0, NULL,
+ 0);
+ if (IS_ERR(priv->pdev)) {
+ ret = PTR_ERR(priv->pdev);
+ dev_err(&pdev->dev, "failed to register platform %s: %d\n",
+ mdrv, ret);
}

return ret;
@@ -553,12 +562,6 @@ static const struct dev_pm_ops fsl_audmix_pm = {
pm_runtime_force_resume)
};

-static const struct of_device_id fsl_audmix_ids[] = {
- { .compatible = "fsl,imx8qm-audmix", },
- { /* sentinel */ }
-};
-MODULE_DEVICE_TABLE(of, fsl_audmix_ids);
-
static struct platform_driver fsl_audmix_driver = {
.probe = fsl_audmix_probe,
.remove = fsl_audmix_remove,
--
2.7.4

2019-04-10 05:08:49

by Nicolin Chen

[permalink] [raw]
Subject: Re: [PATCH v2 2/3] dt-bindings: fsl,audmix: remove "model" attribute

On Tue, Apr 09, 2019 at 11:27:40AM +0000, Viorel Suman wrote:
> Remove "model" attribute.
>
> Signed-off-by: Viorel Suman <[email protected]>

Acked-by: Nicolin Chen <[email protected]>

2019-04-10 05:09:33

by Nicolin Chen

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] ASoC: imx-audmix: fix object reference leaks in probe

On Tue, Apr 09, 2019 at 11:27:42AM +0000, Viorel Suman wrote:
> Release the reference to the underlying device taken
> by of_find_device_by_node() call.
>
> Signed-off-by: Viorel Suman <[email protected]>
> Reported-by: Julia Lawall <[email protected]>

Acked-by: Nicolin Chen <[email protected]>

2019-04-10 05:38:44

by Nicolin Chen

[permalink] [raw]
Subject: Re: [PATCH v2 1/3] ASoC: fsl_audmix: remove "model" attribute

On Tue, Apr 09, 2019 at 11:27:39AM +0000, Viorel Suman wrote:
> Use "of_device_id.data" to specify the machine driver
> instead of "model" DTS attribute.
>
> Signed-off-by: Viorel Suman <[email protected]>

Acked-by: Nicolin Chen <[email protected]>

> ---
> sound/soc/fsl/fsl_audmix.c | 43 +++++++++++++++++++++++--------------------
> 1 file changed, 23 insertions(+), 20 deletions(-)

> + priv->pdev = platform_device_register_data(&pdev->dev, mdrv, 0, NULL,
> + 0);

Would you please send a separate patch to replace "pdev->dev"?

2019-04-10 06:39:18

by Daniel Baluta

[permalink] [raw]
Subject: Re: [alsa-devel] [PATCH v2 1/3] ASoC: fsl_audmix: remove "model" attribute

Hi Nicolin,

On Wed, Apr 10, 2019 at 7:30 AM Nicolin Chen <[email protected]> wrote:
>
> On Tue, Apr 09, 2019 at 11:27:39AM +0000, Viorel Suman wrote:
> > Use "of_device_id.data" to specify the machine driver
> > instead of "model" DTS attribute.
> >
> > Signed-off-by: Viorel Suman <[email protected]>
>
> Acked-by: Nicolin Chen <[email protected]>
>
> > ---
> > sound/soc/fsl/fsl_audmix.c | 43 +++++++++++++++++++++++--------------------
> > 1 file changed, 23 insertions(+), 20 deletions(-)
>
> > + priv->pdev = platform_device_register_data(&pdev->dev, mdrv, 0, NULL,
> > + 0);
>
> Would you please send a separate patch to replace "pdev->dev"?

I am not sure exactly how to explain this change in the commit message. It does
make code easier to read and avoids dereferencing pdev pointer each time.

Is it enough for commit description?

thanks,
Daniel.

2019-04-10 06:45:40

by Nicolin Chen

[permalink] [raw]
Subject: Re: [alsa-devel] [PATCH v2 1/3] ASoC: fsl_audmix: remove "model" attribute

On Wed, Apr 10, 2019 at 09:20:29AM +0300, Daniel Baluta wrote:
> Hi Nicolin,
>
> On Wed, Apr 10, 2019 at 7:30 AM Nicolin Chen <[email protected]> wrote:
> >
> > On Tue, Apr 09, 2019 at 11:27:39AM +0000, Viorel Suman wrote:
> > > Use "of_device_id.data" to specify the machine driver
> > > instead of "model" DTS attribute.
> > >
> > > Signed-off-by: Viorel Suman <[email protected]>
> >
> > Acked-by: Nicolin Chen <[email protected]>
> >
> > > ---
> > > sound/soc/fsl/fsl_audmix.c | 43 +++++++++++++++++++++++--------------------
> > > 1 file changed, 23 insertions(+), 20 deletions(-)
> >
> > > + priv->pdev = platform_device_register_data(&pdev->dev, mdrv, 0, NULL,
> > > + 0);
> >
> > Would you please send a separate patch to replace "pdev->dev"?
>
> I am not sure exactly how to explain this change in the commit message. It does
> make code easier to read and avoids dereferencing pdev pointer each time.
>
> Is it enough for commit description?

You mean this? https://lore.kernel.org/patchwork/patch/862610/

2019-04-10 06:50:36

by Daniel Baluta

[permalink] [raw]
Subject: Re: [alsa-devel] [PATCH v2 1/3] ASoC: fsl_audmix: remove "model" attribute

On Wed, Apr 10, 2019 at 9:37 AM Nicolin Chen <[email protected]> wrote:
>
> On Wed, Apr 10, 2019 at 09:20:29AM +0300, Daniel Baluta wrote:
> > Hi Nicolin,
> >
> > On Wed, Apr 10, 2019 at 7:30 AM Nicolin Chen <[email protected]> wrote:
> > >
> > > On Tue, Apr 09, 2019 at 11:27:39AM +0000, Viorel Suman wrote:
> > > > Use "of_device_id.data" to specify the machine driver
> > > > instead of "model" DTS attribute.
> > > >
> > > > Signed-off-by: Viorel Suman <[email protected]>
> > >
> > > Acked-by: Nicolin Chen <[email protected]>
> > >
> > > > ---
> > > > sound/soc/fsl/fsl_audmix.c | 43 +++++++++++++++++++++++--------------------
> > > > 1 file changed, 23 insertions(+), 20 deletions(-)
> > >
> > > > + priv->pdev = platform_device_register_data(&pdev->dev, mdrv, 0, NULL,
> > > > + 0);
> > >
> > > Would you please send a separate patch to replace "pdev->dev"?
> >
> > I am not sure exactly how to explain this change in the commit message. It does
> > make code easier to read and avoids dereferencing pdev pointer each time.
> >
> > Is it enough for commit description?
>
> You mean this? https://lore.kernel.org/patchwork/patch/862610/

Yes! Thanks.

2019-04-10 10:37:21

by Viorel Suman

[permalink] [raw]
Subject: Re: [EXT] Re: [PATCH v2 1/3] ASoC: fsl_audmix: remove "model" attribute

Hi Nicolin,

On Ma, 2019-04-09 at 21:29 -0700, Nicolin Chen wrote:
> WARNING: This email was created outside of NXP. DO NOT CLICK links or
> attachments unless you recognize the sender and know the content is
> safe.
>
>
>
> On Tue, Apr 09, 2019 at 11:27:39AM +0000, Viorel Suman wrote:
> >
> > Use "of_device_id.data" to specify the machine driver
> > instead of "model" DTS attribute.
> >
> > Signed-off-by: Viorel Suman <[email protected]>
> Acked-by: Nicolin Chen <[email protected]>
>
> >
> > ---
> >  sound/soc/fsl/fsl_audmix.c | 43 +++++++++++++++++++++++-----------
> > ---------
> >  1 file changed, 23 insertions(+), 20 deletions(-)
> >
> > +     priv->pdev = platform_device_register_data(&pdev->dev, mdrv,
> > 0, NULL,
> > +                                                0);
> Would you please send a separate patch to replace "pdev->dev"?

Thank you for review. Yes, will send V3.

/Viorel

2019-04-10 19:07:36

by Nicolin Chen

[permalink] [raw]
Subject: Re: [EXT] Re: [PATCH v2 1/3] ASoC: fsl_audmix: remove "model" attribute

On Wed, Apr 10, 2019 at 10:34:57AM +0000, Viorel Suman wrote:
> Hi Nicolin,
>
> On Ma, 2019-04-09 at 21:29 -0700, Nicolin Chen wrote:
> > WARNING: This email was created outside of NXP. DO NOT CLICK links or
> > attachments unless you recognize the sender and know the content is
> > safe.
> >
> >
> >
> > On Tue, Apr 09, 2019 at 11:27:39AM +0000, Viorel Suman wrote:
> > >
> > > Use "of_device_id.data" to specify the machine driver
> > > instead of "model" DTS attribute.
> > >
> > > Signed-off-by: Viorel Suman <[email protected]>
> > Acked-by: Nicolin Chen <[email protected]>
> >
> > >
> > > ---
> > > ?sound/soc/fsl/fsl_audmix.c | 43 +++++++++++++++++++++++-----------
> > > ---------
> > > ?1 file changed, 23 insertions(+), 20 deletions(-)
> > >
> > > +?????priv->pdev = platform_device_register_data(&pdev->dev, mdrv,
> > > 0, NULL,
> > > +????????????????????????????????????????????????0);
> > Would you please send a separate patch to replace "pdev->dev"?
>
> Thank you for review. Yes, will send V3.

Ah...when I said that, I was literally saying that you should
send a separate patch individually, not resend the series.

Now I see you sent v3/v4 almost at the same time as "Applied"
mails from Mark. And I am totally confused which version got
applied....

Please rebase your local tree and find out which version got
applied and then send the diff with a separate patch.

Thanks
Nicolin