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>
This commit is contained in:
Michal Suchanek 2022-10-12 21:58:02 +02:00 committed by Simon Glass
parent 9b7474d83b
commit 0736f7aa3b

View File

@ -93,6 +93,8 @@ struct udevice *eth_get_dev(void)
if (eth_errno) if (eth_errno)
eth_errno = uclass_first_device_err(UCLASS_ETH, eth_errno = uclass_first_device_err(UCLASS_ETH,
&uc_priv->current); &uc_priv->current);
if (eth_errno)
uc_priv->current = NULL;
} }
return uc_priv->current; return uc_priv->current;
} }