Skip to content

Commit

Permalink
bonding: fix parameter parsing
Browse files Browse the repository at this point in the history
	My last fix (commit ece95f7)
didn't handle one case correctly.  This resolves that, and it will now
correctly parse parameters with arbitrary white space, and either text
names or mode values.

Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Jay Vosburgh authored and David S. Miller committed Feb 3, 2008
1 parent c800c5c commit a42e534
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions drivers/net/bonding/bond_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -4549,14 +4549,19 @@ static void bond_free_all(void)
int bond_parse_parm(const char *buf, struct bond_parm_tbl *tbl)
{
int mode = -1, i, rv;
char modestr[BOND_MAX_MODENAME_LEN + 1] = { 0, };
char *p, modestr[BOND_MAX_MODENAME_LEN + 1] = { 0, };

rv = sscanf(buf, "%d", &mode);
if (!rv) {
for (p = (char *)buf; *p; p++)
if (!(isdigit(*p) || isspace(*p)))
break;

if (*p)
rv = sscanf(buf, "%20s", modestr);
if (!rv)
return -1;
}
else
rv = sscanf(buf, "%d", &mode);

if (!rv)
return -1;

for (i = 0; tbl[i].modename; i++) {
if (mode == tbl[i].mode)
Expand Down

0 comments on commit a42e534

Please sign in to comment.