Re: [PATCH] drivers: net: ethernet: 3com: fix return value

2016-12-24 Thread Thomas Preisner
On Sat, 2016-12-24 at 02:06 +0100, David Dillow wrote:
>On Sat, 2016-12-24 at 00:00 +0100, Thomas Preisner wrote:
>> diff --git a/drivers/net/ethernet/3com/typhoon.c 
>> b/drivers/net/ethernet/3com/typhoon.c
>> index a0cacbe..9a3ab58 100644
>> --- a/drivers/net/ethernet/3com/typhoon.c
>> +++ b/drivers/net/ethernet/3com/typhoon.c
>> @@ -2404,6 +2404,7 @@ typhoon_init_one(struct pci_dev *pdev, const struct 
>> pci_device_id *ent)
>>  
>>  if(!is_valid_ether_addr(dev->dev_addr)) {
>>  err_msg = "Could not obtain valid ethernet address, aborting";
>> +err = -EIO;
>>  goto error_out_reset;
>
>The change above is fine, but the other two should use the return value
>from the failing function call.
>
>
>> @@ -2413,6 +2414,7 @@ typhoon_init_one(struct pci_dev *pdev, const struct 
>> pci_device_id *ent)
>>  INIT_COMMAND_WITH_RESPONSE(_cmd, TYPHOON_CMD_READ_VERSIONS);
>>  if(typhoon_issue_command(tp, 1, _cmd, 3, xp_resp) < 0) {
>>  err_msg = "Could not get Sleep Image version";
>> +err = -EIO;
>>  goto error_out_reset;
>>  }
>>  
>> @@ -2455,6 +2457,7 @@ typhoon_init_one(struct pci_dev *pdev, const struct 
>> pci_device_id *ent)
>>  
>>  if(register_netdev(dev) < 0) {
>>  err_msg = "unable to register netdev";
>> +err = -EIO;
>>  goto error_out_reset;
>>  }
>>  

You are of course right. After you mentioning this we've looked into it a bit
further and realized that the return values of failing function calls are not
being used in various occasions inside of typhoon_init_one().
That's why we've created a second patch to fix this misbehavior (if it is one).
In case this was intended, feel free to ignore the second patch.

Patch 1:
Makes the function typhoon_init_one() return a negative error code instead of 0.

Patch 2 [Optional]:
Makes the function typhoon_init_one() return the return value of the
corresponding failing function calls instead of a "fixed" negative error code.

With regards (and merry christmas),
Milan and Thomas



Re: [PATCH] drivers: net: ethernet: 3com: fix return value

2016-12-23 Thread David Dillow
On Sat, 2016-12-24 at 00:00 +0100, Thomas Preisner wrote:
> diff --git a/drivers/net/ethernet/3com/typhoon.c 
> b/drivers/net/ethernet/3com/typhoon.c
> index a0cacbe..9a3ab58 100644
> --- a/drivers/net/ethernet/3com/typhoon.c
> +++ b/drivers/net/ethernet/3com/typhoon.c
> @@ -2404,6 +2404,7 @@ typhoon_init_one(struct pci_dev *pdev, const struct 
> pci_device_id *ent)
>  
>   if(!is_valid_ether_addr(dev->dev_addr)) {
>   err_msg = "Could not obtain valid ethernet address, aborting";
> + err = -EIO;
>   goto error_out_reset;

The change above is fine, but the other two should use the return value
from the failing function call.


> @@ -2413,6 +2414,7 @@ typhoon_init_one(struct pci_dev *pdev, const struct 
> pci_device_id *ent)
>   INIT_COMMAND_WITH_RESPONSE(_cmd, TYPHOON_CMD_READ_VERSIONS);
>   if(typhoon_issue_command(tp, 1, _cmd, 3, xp_resp) < 0) {
>   err_msg = "Could not get Sleep Image version";
> + err = -EIO;
>   goto error_out_reset;
>   }
>  
> @@ -2455,6 +2457,7 @@ typhoon_init_one(struct pci_dev *pdev, const struct 
> pci_device_id *ent)
>  
>   if(register_netdev(dev) < 0) {
>   err_msg = "unable to register netdev";
> + err = -EIO;
>   goto error_out_reset;
>   }
>  




[PATCH] drivers: net: ethernet: 3com: fix return value

2016-12-23 Thread Thomas Preisner
In a few cases the err-variable is not set to a negative error code if a
function call fails and thus 0 is returned instead.
It may be better to set err to the proper negative error code before
returning.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=188841

Reported-by: Pan Bian 
Signed-off-by: Thomas Preisner 
Signed-off-by: Milan Stephan 
---
 drivers/net/ethernet/3com/typhoon.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/ethernet/3com/typhoon.c 
b/drivers/net/ethernet/3com/typhoon.c
index a0cacbe..9a3ab58 100644
--- a/drivers/net/ethernet/3com/typhoon.c
+++ b/drivers/net/ethernet/3com/typhoon.c
@@ -2404,6 +2404,7 @@ typhoon_init_one(struct pci_dev *pdev, const struct 
pci_device_id *ent)
 
if(!is_valid_ether_addr(dev->dev_addr)) {
err_msg = "Could not obtain valid ethernet address, aborting";
+   err = -EIO;
goto error_out_reset;
}
 
@@ -2413,6 +2414,7 @@ typhoon_init_one(struct pci_dev *pdev, const struct 
pci_device_id *ent)
INIT_COMMAND_WITH_RESPONSE(_cmd, TYPHOON_CMD_READ_VERSIONS);
if(typhoon_issue_command(tp, 1, _cmd, 3, xp_resp) < 0) {
err_msg = "Could not get Sleep Image version";
+   err = -EIO;
goto error_out_reset;
}
 
@@ -2455,6 +2457,7 @@ typhoon_init_one(struct pci_dev *pdev, const struct 
pci_device_id *ent)
 
if(register_netdev(dev) < 0) {
err_msg = "unable to register netdev";
+   err = -EIO;
goto error_out_reset;
}
 
-- 
2.7.4