If memory allocation for the parents array or the parent string fails, then fail the registration immediately instead of calling clk_register and hoping it fails there. Return -ENOMEM on failure. Signed-off-by: Saravana Kannan <skannan@xxxxxxxxxxxxxx> Cc: Mike Turquette <mturquette@xxxxxxxxxx> Cc: Andrew Lunn <andrew@xxxxxxx> Cc: Rob Herring <rob.herring@xxxxxxxxxxx> Cc: Russell King <linux@xxxxxxxxxxxxxxxx> Cc: Jeremy Kerr <jeremy.kerr@xxxxxxxxxxxxx> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Cc: Arnd Bergman <arnd.bergmann@xxxxxxxxxx> Cc: Paul Walmsley <paul@xxxxxxxxx> Cc: Shawn Guo <shawn.guo@xxxxxxxxxxxxx> Cc: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> Cc: Jamie Iles <jamie@xxxxxxxxxxxxx> Cc: Richard Zhao <richard.zhao@xxxxxxxxxx> Cc: Saravana Kannan <skannan@xxxxxxxxxxxxxx> Cc: Magnus Damm <magnus.damm@xxxxxxxxx> Cc: Mark Brown <broonie@xxxxxxxxxxxxxxxxxxxxxxxxxxx> Cc: Linus Walleij <linus.walleij@xxxxxxxxxxxxxx> Cc: Stephen Boyd <sboyd@xxxxxxxxxxxxxx> Cc: Amit Kucheria <amit.kucheria@xxxxxxxxxx> Cc: Deepak Saxena <dsaxena@xxxxxxxxxx> Cc: Grant Likely <grant.likely@xxxxxxxxxxxx> --- There are still some memory free issues when clk_register() fails, but I will fix it when I fixed the other register() fns to return ENOMEM of alloc failure instead of a NULL. drivers/clk/clk-fixed-rate.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/clk/clk-fixed-rate.c b/drivers/clk/clk-fixed-rate.c index 90c79fb..6423ae9 100644 --- a/drivers/clk/clk-fixed-rate.c +++ b/drivers/clk/clk-fixed-rate.c @@ -61,22 +61,26 @@ struct clk *clk_register_fixed_rate(struct device *dev, const char *name, parent_names = kmalloc(sizeof(char *), GFP_KERNEL); if (! parent_names) - goto out; + goto fail_ptr; len = sizeof(char) * strlen(parent_name); parent_names[0] = kmalloc(len, GFP_KERNEL); if (!parent_names[0]) - goto out; + goto fail_str; strncpy(parent_names[0], parent_name, len); } -out: return clk_register(dev, name, &clk_fixed_rate_ops, &fixed->hw, parent_names, (parent_name ? 1 : 0), flags); +fail_str: + kfree(parent_names); +fail_ptr: + kfree(fixed); + return ERR_PTR(-ENOMEM); } -- 1.7.8.3 -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html