Re: [PATCH 2/4] pwm: omap-dmtimer: simplify error handling

From: Uwe Kleine-König
Date: Mon Nov 11 2019 - 15:08:10 EST


On Mon, Nov 11, 2019 at 02:32:30PM +0100, Markus Elfring wrote:
> > 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?

Yes, this is in my eyes more sensible. Either you have the expected path
and the error path interwinded, or you have to duplicate some cleanup.
IMHO the latter variant is the one that is easier to understand and the
one where it's less likely to oversee a needed cleanup.

> > +++ 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.

Documentation/process/coding-style.rst states: "Choose label names which
say what the goto does or why the goto exists." So I'd say my names are
perfectly fine.

> > @@ -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?

Either you name your labels after what the code at the label does (then
"free_dm_timer" is good) or you name it after why you are here (and then
err_alloc_omap is fine). I prefer the latter style and then the label
name always has to correspond to the action just above it (if any).
That's why I grouped the "err_alloc_omap" label to a comment saying that
*omap doesn't need to be freed.

> > +put:
> > + of_node_put(timer);
> â
>
> Can the label âput_nodeâ be nicer?

I agree that the label name is bad. I kept the name here and after the
3rd patch the label names are consistent.

Best regards
Uwe

--
Pengutronix e.K. | Uwe Kleine-KÃnig |
Industrial Linux Solutions | https://www.pengutronix.de/ |