2018-11-24 08:45:37

by Nicholas Mc Guire

[permalink] [raw]
Subject: [PATCH] clk: davinci: check for devm_kasprintf() failure

devm_kasprintf() may return NULL on failure of internal allocation thus
the assignment to lpsc->pm_domain.name is not safe if not checked. On
error davinci_lpsc_clk_register() returns a pointer to davinci_lpsc_clk
which is checked with IS_ERR() so returning ERR_PTR(-ENOMEM) should be
fine here.

Signed-off-by: Nicholas Mc Guire <[email protected]>
Fixes: c6ed4d734bc7 ("clk: davinci: New driver for davinci PSC clocks")
---

Problem located with experimental coccinelle script

Patch was compile tested with: davinci_all_defconfig

Patch is against 4.20-rc3 (localversion-next is next-20181123)

drivers/clk/davinci/psc.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/drivers/clk/davinci/psc.c b/drivers/clk/davinci/psc.c
index 5b69e24..ca9b5c3 100644
--- a/drivers/clk/davinci/psc.c
+++ b/drivers/clk/davinci/psc.c
@@ -278,6 +278,11 @@ davinci_lpsc_clk_register(struct device *dev, const char *name,

lpsc->pm_domain.name = devm_kasprintf(dev, GFP_KERNEL, "%s: %s",
best_dev_name(dev), name);
+ if (!lpsc->pm_domain.name) {
+ kfree(lpsc);
+ return ERR_PTR(-ENOMEM);
+ }
+
lpsc->pm_domain.attach_dev = davinci_psc_genpd_attach_dev;
lpsc->pm_domain.detach_dev = davinci_psc_genpd_detach_dev;
lpsc->pm_domain.flags = GENPD_FLAG_PM_CLK;
--
2.1.4



2018-11-28 22:07:49

by Stephen Boyd

[permalink] [raw]
Subject: Re: [PATCH] clk: davinci: check for devm_kasprintf() failure

Quoting Nicholas Mc Guire (2018-11-23 09:33:28)
> devm_kasprintf() may return NULL on failure of internal allocation thus
> the assignment to lpsc->pm_domain.name is not safe if not checked. On
> error davinci_lpsc_clk_register() returns a pointer to davinci_lpsc_clk
> which is checked with IS_ERR() so returning ERR_PTR(-ENOMEM) should be
> fine here.
>
> Signed-off-by: Nicholas Mc Guire <[email protected]>
> Fixes: c6ed4d734bc7 ("clk: davinci: New driver for davinci PSC clocks")
> ---
>
> Problem located with experimental coccinelle script
>
> Patch was compile tested with: davinci_all_defconfig
>
> Patch is against 4.20-rc3 (localversion-next is next-20181123)

There are a bunch of other allocation issues with this driver so I'd
rather not expend the effort to review the one coccinelle script fix
here and instead I'd like to see the whole fix to this driver. Please
add proper lifetime management for all the allocations in this code.