> Implementation note: The put: label was never reached without a goto and > ret being unequal to 0, so the removed return statement is fine. This can look fine (in principle) because the label was repositioned here. Do you really want to call the function “of_node_put” at two places now? > +++ b/drivers/pwm/pwm-omap-dmtimer.c … > omap = devm_kzalloc(&pdev->dev, sizeof(*omap), GFP_KERNEL); > if (!omap) { > - pdata->free(dm_timer); > - return -ENOMEM; > + ret = -ENOMEM; > + goto err_alloc_omap; > } … I suggest to reconsider your label name selection according to the Linux coding style. > @@ -339,13 +334,28 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev) … > +err_pwmchip_add: > + > + /* > + * *omap is allocated using devm_kzalloc, > + * so no free necessary here > + */ > +err_alloc_omap: > + > + pdata->free(dm_timer); Would the use of the label “free_dm_timer” be more appropriate? > +put: > + of_node_put(timer); … Can the label “put_node” be nicer? Regards, Markus