diff options
author | Krzysztof Kozlowski <k.kozlowski@samsung.com> | 2015-01-05 10:52:40 +0100 |
---|---|---|
committer | Michael Turquette <mturquette@linaro.org> | 2015-01-17 13:52:41 -0800 |
commit | 4e3c021fb995bcbb5d1f814d00584cb80eb904a8 (patch) | |
tree | c9e503e37f84172b5184ebe0dd62d2ad8ab62462 /drivers/clk/clk-divider.c | |
parent | 0c7665c356021c10c3f45a620f3f12ad599850d5 (diff) | |
download | linux-4e3c021fb995bcbb5d1f814d00584cb80eb904a8.tar.bz2 |
clk: Add clk_unregister_{divider, gate, mux} to close memory leak
The common clk_register_{divider,gate,mux} functions allocated memory
for internal data which wasn't freed anywhere. Drivers using these
helpers could only unregister clocks but the memory would still leak.
Add corresponding unregister functions which will release all resources.
Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Michael Turquette <mturquette@linaro.org>
Diffstat (limited to 'drivers/clk/clk-divider.c')
-rw-r--r-- | drivers/clk/clk-divider.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/clk/clk-divider.c b/drivers/clk/clk-divider.c index c0a842b335c5..c2bb9f679ec6 100644 --- a/drivers/clk/clk-divider.c +++ b/drivers/clk/clk-divider.c @@ -463,3 +463,19 @@ struct clk *clk_register_divider_table(struct device *dev, const char *name, width, clk_divider_flags, table, lock); } EXPORT_SYMBOL_GPL(clk_register_divider_table); + +void clk_unregister_divider(struct clk *clk) +{ + struct clk_divider *div; + struct clk_hw *hw; + + hw = __clk_get_hw(clk); + if (!hw) + return; + + div = to_clk_divider(hw); + + clk_unregister(clk); + kfree(div); +} +EXPORT_SYMBOL_GPL(clk_unregister_divider); |