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

From: Markus Elfring
Date: Mon Nov 11 2019 - 16:30:52 EST


>> Do you really want to call the function âof_node_putâ at two places now?
>
> Yes, this is in my eyes more sensible.

Thanks for this explanation.


> Either you have the expected path and the error path interwinded,
> and the error path interwinded,

This is also reasonable then.
This design approach provides the possibility to release a few resources
earlier before using additional functionality.


> or you have to duplicate some cleanup.

* This can be required.

* I imagine that specific software infrastructures can help to avoid
such duplication, can't they?


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

I am curious on how the clarification will be continued.


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

The guidance from the example after this quotation might be still too terse
so far, isn't it?


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

I got used to this approach.


> you name it after why you are here (and then err_alloc_omap is fine).

This choice can trigger special software design consequences.


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

I am also curious if any other contributors would like to share more
views around this choice.


>>> +put:
>>> + of_node_put(timer);
>> â
>>
>> Can the label âput_nodeâ be nicer?
>
> I agree that the label name is bad.

I find your agreement on this aspect interesting then.


> I kept the name here and after the 3rd patch the label names are consistent.

Can such an evolution be questionable?

Regards,
Markus