Re: [PATCH] drivers: net: ethernet: 3com: fix return value
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
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
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 BianSigned-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