2014-06-24 11:14:37

by Daniel Walter

[permalink] [raw]
Subject: [PATCH v3] arch/mips/rb532: replace mac_addr parsing

Replace parse_mac_addr with mac_pton().


Signed-off-by: Daniel Walter <[email protected]>
---
Changes since v2
Use mac_pton() instead of sscanf()
added error handling in case could not be parsed
---
Patch applies against current linux-git
---
arch/mips/rb532/devices.c | 27 ++++-----------------------
1 file changed, 4 insertions(+), 23 deletions(-)
---
diff --git a/arch/mips/rb532/devices.c b/arch/mips/rb532/devices.c
index 3af00b2..03a4cdc 100644
--- a/arch/mips/rb532/devices.c
+++ b/arch/mips/rb532/devices.c
@@ -250,28 +250,6 @@ static struct platform_device *rb532_devs[] = {
&rb532_wdt
};

-static void __init parse_mac_addr(char *macstr)
-{
- int i, h, l;
-
- for (i = 0; i < 6; i++) {
- if (i != 5 && *(macstr + 2) != ':')
- return;
-
- h = hex_to_bin(*macstr++);
- if (h == -1)
- return;
-
- l = hex_to_bin(*macstr++);
- if (l == -1)
- return;
-
- macstr++;
- korina_dev0_data.mac[i] = (h << 4) + l;
- }
-}
-
-
/* NAND definitions */
#define NAND_CHIP_DELAY 25

@@ -333,7 +311,10 @@ static int __init plat_setup_devices(void)
static int __init setup_kmac(char *s)
{
printk(KERN_INFO "korina mac = %s\n", s);
- parse_mac_addr(s);
+ if (!mac_pton(s, korina_dev0_data.mac)) {
+ printk(KERN_ERR "Invalid mac\n");
+ return -EINVAL;
+ }
return 0;
}


2014-06-24 12:56:14

by James Hogan

[permalink] [raw]
Subject: Re: [PATCH v3] arch/mips/rb532: replace mac_addr parsing

On 24/06/14 12:14, Daniel Walter wrote:
> Replace parse_mac_addr with mac_pton().
>
>
> Signed-off-by: Daniel Walter <[email protected]>

Reviewed-by: James Hogan <[email protected]>

Cheers
James

> ---
> Changes since v2
> Use mac_pton() instead of sscanf()
> added error handling in case could not be parsed
> ---
> Patch applies against current linux-git
> ---
> arch/mips/rb532/devices.c | 27 ++++-----------------------
> 1 file changed, 4 insertions(+), 23 deletions(-)
> ---
> diff --git a/arch/mips/rb532/devices.c b/arch/mips/rb532/devices.c
> index 3af00b2..03a4cdc 100644
> --- a/arch/mips/rb532/devices.c
> +++ b/arch/mips/rb532/devices.c
> @@ -250,28 +250,6 @@ static struct platform_device *rb532_devs[] = {
> &rb532_wdt
> };
>
> -static void __init parse_mac_addr(char *macstr)
> -{
> - int i, h, l;
> -
> - for (i = 0; i < 6; i++) {
> - if (i != 5 && *(macstr + 2) != ':')
> - return;
> -
> - h = hex_to_bin(*macstr++);
> - if (h == -1)
> - return;
> -
> - l = hex_to_bin(*macstr++);
> - if (l == -1)
> - return;
> -
> - macstr++;
> - korina_dev0_data.mac[i] = (h << 4) + l;
> - }
> -}
> -
> -
> /* NAND definitions */
> #define NAND_CHIP_DELAY 25
>
> @@ -333,7 +311,10 @@ static int __init plat_setup_devices(void)
> static int __init setup_kmac(char *s)
> {
> printk(KERN_INFO "korina mac = %s\n", s);
> - parse_mac_addr(s);
> + if (!mac_pton(s, korina_dev0_data.mac)) {
> + printk(KERN_ERR "Invalid mac\n");
> + return -EINVAL;
> + }
> return 0;
> }
>
>