On Wed, 2013-01-02 at 23:35 -0800, Dmitry Torokhov wrote: > On Thu, Jan 03, 2013 at 04:25:09PM +1300, Tony Prisk wrote: > > +static void __init vt8500_timer_init(void) > > +{ > > + struct device_node *np; > > + int timer_irq; > > + > > + np = of_find_matching_node(NULL, vt8500_timer_ids); > > + if (!np) { > > + pr_err("%s: Timer description missing from Device Tree\n", > > + __func__); > > + return; > > + } > > + regbase = of_iomap(np, 0); > > + if (!regbase) { > > + pr_err("%s: Missing iobase description in Device Tree\n", > > + __func__); > > + of_node_put(np); > > + return; > > + } > > + timer_irq = irq_of_parse_and_map(np, 0); > > + if (!timer_irq) { > > + pr_err("%s: Missing irq description in Device Tree\n", > > + __func__); > > + of_node_put(np); > > + return; > > You are forgetting to unmap the regbase here.
Also I think it'd be nicer to write something like: struct device_node *np; int timer_irq; const char *reason; np = of_find_matching_node(NULL, vt8500_timer_ids); if (!np) { reason = "timer"; goto error; } regbase = of_iomap(np, 0); if (!regbase) { reason = "iobase"; goto error_put; } timer_irq = irq_of_parse_and_map(np, 0); if (!timer_irq) { reason = "irq"; goto error_remap; } ... error_remap: unmap...; error_put: of_node_put(np); error: pr_err("%s: Missing %s description in Device Tree\n", __func__, reason); return; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/