dm: eth: Correctly detect alias in eth_get_dev_by_name()
authorBin Meng <bmeng.cn@gmail.com>
Fri, 28 Aug 2015 05:25:54 +0000 (22:25 -0700)
committerSimon Glass <sjg@chromium.org>
Wed, 9 Sep 2015 13:48:03 +0000 (07:48 -0600)
When given a device name string, we should test to see if it is
really an alias like "eth#".

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
net/eth.c

index c46a8c30500130bff53f4766d15724500c94bfdb..26520d303885ea1e77e396b7f175d13f0299417b 100644 (file)
--- a/net/eth.c
+++ b/net/eth.c
@@ -195,10 +195,11 @@ struct udevice *eth_get_dev_by_name(const char *devname)
        const char *startp = NULL;
        struct udevice *it;
        struct uclass *uc;
+       int len = strlen("eth");
 
        /* Must be longer than 3 to be an alias */
-       if (strlen(devname) > strlen("eth")) {
-               startp = devname + strlen("eth");
+       if (!strncmp(devname, "eth", len) && strlen(devname) > len) {
+               startp = devname + len;
                seq = simple_strtoul(startp, &endp, 10);
        }