Re: [PATCH] phy: tegra: Use PTR_ERR_OR_ZERO() to simplify code

From: Dmitry Osipenko
Date: Wed May 06 2020 - 11:40:32 EST


06.05.2020 14:47, Vidya Sagar ÐÐÑÐÑ:
> Thanks for pushing this change.
> I'm fine with this change as it is attempting to change only the last
> occurrence of the (IS_ERR(...)) + PTR_ERR combination.
> But, this code was initially written with PTR_ERR_OR_ZERO() itself but
> later changed to use (IS_ERR(...)) + PTR_ERR based on the review comment
> from Dmitry Osipenko ( https://lkml.org/lkml/2019/6/20/1457 )
>
> Adding Dmitry as well to review the change.
>
> I'm fine with this change.
> Reviewed-by: Vidya Sagar <vidyas@xxxxxxxxxx>
>
> On 05-May-20 8:30 PM, Aishwarya Ramakrishnan wrote:
>> External email: Use caution opening links or attachments
>>
>>
>> PTR_ERR_OR_ZERO contains if(IS_ERR(...)) + PTR_ERR.
>>
>> Generated by: scripts/coccinelle/api/ptr_ret.cocci
>>
>> Signed-off-by: Aishwarya Ramakrishnan <aishwaryarj100@xxxxxxxxx>
>> ---
>> Â drivers/phy/tegra/phy-tegra194-p2u.c | 5 +----
>> Â 1 file changed, 1 insertion(+), 4 deletions(-)
>>
>> diff --git a/drivers/phy/tegra/phy-tegra194-p2u.c
>> b/drivers/phy/tegra/phy-tegra194-p2u.c
>> index 7042bed9feaa..42394d27f4cb 100644
>> --- a/drivers/phy/tegra/phy-tegra194-p2u.c
>> +++ b/drivers/phy/tegra/phy-tegra194-p2u.c
>> @@ -92,10 +92,7 @@ static int tegra_p2u_probe(struct platform_device
>> *pdev)
>> ÂÂÂÂÂÂÂÂ phy_set_drvdata(generic_phy, phy);
>>
>> ÂÂÂÂÂÂÂÂ phy_provider = devm_of_phy_provider_register(dev,
>> of_phy_simple_xlate);
>> -ÂÂÂÂÂÂ if (IS_ERR(phy_provider))
>> -ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ return PTR_ERR(phy_provider);
>> -
>> -ÂÂÂÂÂÂ return 0;
>> +ÂÂÂÂÂÂ return PTR_ERR_OR_ZERO(phy_provider);
>> Â }

Quite some people think that such a change doesn't bring any benefits,
it doesn't help readability of the code, it even makes harder to read
the code for a human being.

IIRC, there were some requests in the past to remove that cocci rule to
stop such auto-generated patches to re-occur over and over again.

The PTR_ERR_OR_ZERO is good to use in a cases where it's not returned
directly, like this:

phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
err = PTR_ERR_OR_ZERO(phy_provider);
if (err)
return err;

return 0;