summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorMichal Suchanek <msuchanek@suse.de>2022-10-12 21:58:02 +0200
committerSimon Glass <sjg@chromium.org>2022-10-17 21:17:12 -0600
commit0736f7aa3b044bef9dc756902608133843696ed8 (patch)
treedecfaa2e3b46282f620107579f7ab855de591d8e /net
parent9b7474d83b45d2b738866e9a4a46fe2b498a65d1 (diff)
net: eth-uclass: Do not set device on error
eth_get_dev relies on the broken behavior that returns an error but not the device on which the error happened which gives the caller no reasonable way to report or handle the error. In a later patch uclass_first_device_err will be changed to return the device on error but eth_get_dev stores the returned device pointer directly in a global state without checking the return value. Unset the pointer again in the error case. Signed-off-by: Michal Suchanek <msuchanek@suse.de> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'net')
-rw-r--r--net/eth-uclass.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/eth-uclass.c b/net/eth-uclass.c
index 8c3f9cc31b..f41da4b37b 100644
--- a/net/eth-uclass.c
+++ b/net/eth-uclass.c
@@ -93,6 +93,8 @@ struct udevice *eth_get_dev(void)
if (eth_errno)
eth_errno = uclass_first_device_err(UCLASS_ETH,
&uc_priv->current);
+ if (eth_errno)
+ uc_priv->current = NULL;
}
return uc_priv->current;
}