diff options
Diffstat (limited to 'drivers/net/netconsole.c')
-rw-r--r-- | drivers/net/netconsole.c | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index 62fdbaa1fb60..a83e101440fd 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c | |||
@@ -429,8 +429,6 @@ static ssize_t store_remote_mac(struct netconsole_target *nt, | |||
429 | size_t count) | 429 | size_t count) |
430 | { | 430 | { |
431 | u8 remote_mac[ETH_ALEN]; | 431 | u8 remote_mac[ETH_ALEN]; |
432 | char *p = (char *) buf; | ||
433 | int i; | ||
434 | 432 | ||
435 | if (nt->enabled) { | 433 | if (nt->enabled) { |
436 | printk(KERN_ERR "netconsole: target (%s) is enabled, " | 434 | printk(KERN_ERR "netconsole: target (%s) is enabled, " |
@@ -439,23 +437,13 @@ static ssize_t store_remote_mac(struct netconsole_target *nt, | |||
439 | return -EINVAL; | 437 | return -EINVAL; |
440 | } | 438 | } |
441 | 439 | ||
442 | for (i = 0; i < ETH_ALEN - 1; i++) { | 440 | if (!mac_pton(buf, remote_mac)) |
443 | remote_mac[i] = simple_strtoul(p, &p, 16); | 441 | return -EINVAL; |
444 | if (*p != ':') | 442 | if (buf[3 * ETH_ALEN - 1] && buf[3 * ETH_ALEN - 1] != '\n') |
445 | goto invalid; | 443 | return -EINVAL; |
446 | p++; | ||
447 | } | ||
448 | remote_mac[ETH_ALEN - 1] = simple_strtoul(p, &p, 16); | ||
449 | if (*p && (*p != '\n')) | ||
450 | goto invalid; | ||
451 | |||
452 | memcpy(nt->np.remote_mac, remote_mac, ETH_ALEN); | 444 | memcpy(nt->np.remote_mac, remote_mac, ETH_ALEN); |
453 | 445 | ||
454 | return strnlen(buf, count); | 446 | return strnlen(buf, count); |
455 | |||
456 | invalid: | ||
457 | printk(KERN_ERR "netconsole: invalid input\n"); | ||
458 | return -EINVAL; | ||
459 | } | 447 | } |
460 | 448 | ||
461 | /* | 449 | /* |