Hi Yong, We're getting pretty close - just a couple of changes:
> + } else { > + struct preinit_clk *p; > + mutex_lock(&preinit_lock); > + p = kmalloc(sizeof(*p), GFP_KERNEL); > + if (!p) > + goto unlock; > + p->clk = clk; > + list_add(&p->list, &preinit_clks); > +unlock: > + mutex_unlock(&preinit_lock); > + } Might be best to avoid the goto: } else { struct preinit_clk *p; mutex_lock(&preinit_lock); p = kmalloc(sizeof(*p), GFP_KERNEL); if (p) { p->clk = clk; list_add(&p->list, &preinit_clks); } mutex_unlock(&preinit_lock); } > +static int __init clk_debugfs_init(void) > +{ > + struct preinit_clk *pclk, *tmp; > + > + if (debugfs_initialized()) > + init_done = 1; No need to check debugfs_initialised() here; if it's not initialised we're in trouble anyway. > + > + list_for_each_entry(pclk, &preinit_clks, list) { > + clk_debug_register(pclk->clk); > + } You should hold preinit_lock while traversing the list here. Cheers, Jeremy _______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev