lkml.org 
[lkml]   [2015]   [Dec]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH 6/7] drivers: net: cpsw: fix error return code
From
Date
Hello.

On 12/26/2015 08:50 PM, Sergei Shtylyov wrote:

>>>> diff --git a/drivers/net/ethernet/ti/cpsw.c
>>>> b/drivers/net/ethernet/ti/cpsw.c
>>>> index 3409e80..6a76992 100644
>>>> --- a/drivers/net/ethernet/ti/cpsw.c
>>>> +++ b/drivers/net/ethernet/ti/cpsw.c
>>>> @@ -2448,8 +2448,10 @@ static int cpsw_probe(struct platform_device *pdev)
>>>>
>>>> /* RX IRQ */
>>>> irq = platform_get_irq(pdev, 1);
>>>> - if (irq < 0)
>>>> + if (irq < 0) {
>>>> + ret = -ENOENT;
>>>
>>> Why not just propagate an error returned by that function?
>>
>> OK, I did what was done a few lines before in the same function:
>>
>> ndev->irq = platform_get_irq(pdev, 1);
>> if (ndev->irq < 0) {
>> dev_err(priv->dev, "error getting irq resource\n");
>> ret = -ENOENT;
>> goto clean_ale_ret;
>> }
>>
>> Maybe they should all be changed?
>
> Yeah, I'd vote for it. I'm seeing no sense in overriding an actual error.

Hm, I decided to check drivers/base/dd.c and I think I maybe know the
reason now: -ENXIO, usually returned by platform_get_irq(), is silently
"swallowed" by really_probe(); to be precise, -ENODEV and -ENXIO are only
reported with pr_debug(), while -ENOENT causes printk(KERN_WARNING, ...)...

> [...]
>
>> julia

MBR, Sergei



\
 
 \ /
  Last update: 2015-12-26 21:01    [W:0.065 / U:0.644 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site