]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
net: eth-uclass: Do not set device on error
authorMichal Suchanek <msuchanek@suse.de>
Wed, 12 Oct 2022 19:58:02 +0000 (21:58 +0200)
committerSimon Glass <sjg@chromium.org>
Tue, 18 Oct 2022 03:17:12 +0000 (21:17 -0600)
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>
net/eth-uclass.c

index 8c3f9cc31b760597134ec67f743d4577ca575cc1..f41da4b37b3aa59e02aac8d02191c06e64b7600c 100644 (file)
@@ -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;
 }