Message ID | 20191010013101.5364-1-navid.emamdoost@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | clk: bcm2835: Fix memory leak in bcm2835_register_pll | expand |
Hello, On Thursday, October 10, 2019, 3:30:58 AM CEST Navid Emamdoost wrote: > In the implementation of bcm2835_register_pll(), the allocated memory > for pll should be released if devm_clk_hw_register() fails. > > Fixes: b19f009d4510 ("clk: bcm2835: Migrate to clk_hw based registration and OF APIs") > Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com> > --- > drivers/clk/bcm/clk-bcm2835.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c > index 802e488fd3c3..99549642110a 100644 > --- a/drivers/clk/bcm/clk-bcm2835.c > +++ b/drivers/clk/bcm/clk-bcm2835.c > @@ -1320,8 +1320,10 @@ static struct clk_hw *bcm2835_register_pll(struct bcm2835_cprman *cprman, > pll->hw.init = &init; > > ret = devm_clk_hw_register(cprman->dev, &pll->hw); > - if (ret) > + if (ret) { > + kfree(pll); > return NULL; > + } > return &pll->hw; > } Eh, is pll freed at all, even in successful case? I failed to find a corresponding kfree(). The pointer itself is lost once the function returns. The solution would rather be to use devm_kzalloc instead of kzalloc, like the other clocks in e.g. bcm2835_register_pll() Best regards, Alexander
diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c index 802e488fd3c3..99549642110a 100644 --- a/drivers/clk/bcm/clk-bcm2835.c +++ b/drivers/clk/bcm/clk-bcm2835.c @@ -1320,8 +1320,10 @@ static struct clk_hw *bcm2835_register_pll(struct bcm2835_cprman *cprman, pll->hw.init = &init; ret = devm_clk_hw_register(cprman->dev, &pll->hw); - if (ret) + if (ret) { + kfree(pll); return NULL; + } return &pll->hw; }
In the implementation of bcm2835_register_pll(), the allocated memory for pll should be released if devm_clk_hw_register() fails. Fixes: b19f009d4510 ("clk: bcm2835: Migrate to clk_hw based registration and OF APIs") Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com> --- drivers/clk/bcm/clk-bcm2835.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)