bonding: check slave set command firstly
authorTonghao Zhang <xiangxia.m.yue@gmail.com>
Mon, 11 Feb 2019 18:49:48 +0000 (10:49 -0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 14 Feb 2019 16:35:50 +0000 (11:35 -0500)
This patch is a little improvement. If user use the
command shown as below, we should print the info [1]
instead of [2]. The eth0 exists actually, and it may
confuse user.

$ echo "eth0" > /sys/class/net/bond4/bonding/slaves

[1] "bond4: no command found in slaves file - use +ifname or -ifname"
[2] "write error: No such device"

Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bonding/bond_options.c

index 4d5d01c..da1fc17 100644 (file)
@@ -1375,6 +1375,7 @@ static int bond_option_slaves_set(struct bonding *bond,
        sscanf(newval->string, "%16s", command); /* IFNAMSIZ*/
        ifname = command + 1;
        if ((strlen(command) <= 1) ||
+           (command[0] != '+' && command[0] != '-') ||
            !dev_valid_name(ifname))
                goto err_no_cmd;
 
@@ -1398,6 +1399,7 @@ static int bond_option_slaves_set(struct bonding *bond,
                break;
 
        default:
+               /* should not run here. */
                goto err_no_cmd;
        }