diff options
Diffstat (limited to 'target/linux')
-rw-r--r-- | target/linux/package/switch/src/switch-core.c | 7 | ||||
-rw-r--r-- | target/linux/package/switch/src/switch-core.h | 8 | ||||
-rw-r--r-- | target/linux/package/switch/src/switch-robo.c | 9 |
3 files changed, 14 insertions, 10 deletions
diff --git a/target/linux/package/switch/src/switch-core.c b/target/linux/package/switch/src/switch-core.c index 8216646370..6b59b9ba24 100644 --- a/target/linux/package/switch/src/switch-core.c +++ b/target/linux/package/switch/src/switch-core.c @@ -68,13 +68,6 @@ static struct file_operations switch_proc_fops = { write: switch_proc_write }; -static inline char *strdup(char *str) -{ - char *new = kmalloc(strlen(str) + 1, GFP_KERNEL); - strcpy(new, str); - return new; -} - static ssize_t switch_proc_read(struct file *file, char *buf, size_t count, loff_t *ppos) { #ifdef LINUX_2_4 diff --git a/target/linux/package/switch/src/switch-core.h b/target/linux/package/switch/src/switch-core.h index a6621eed22..5292469c01 100644 --- a/target/linux/package/switch/src/switch-core.h +++ b/target/linux/package/switch/src/switch-core.h @@ -48,4 +48,12 @@ extern switch_vlan_config *switch_parse_vlan(switch_driver *driver, char *buf); extern int switch_parse_media(char *buf); extern int switch_print_media(char *buf, int media); +static inline char *strdup(char *str) +{ + char *new = kmalloc(strlen(str) + 1, GFP_KERNEL); + strcpy(new, str); + return new; +} + + #endif diff --git a/target/linux/package/switch/src/switch-robo.c b/target/linux/package/switch/src/switch-robo.c index 7e4c4de296..b23fca6442 100644 --- a/target/linux/package/switch/src/switch-robo.c +++ b/target/linux/package/switch/src/switch-robo.c @@ -51,6 +51,7 @@ #define SIOCGETCPHYRD (SIOCDEVPRIVATE + 9) #define SIOCSETCPHYWR (SIOCDEVPRIVATE + 10) +static char *device; static int use_et = 0; static int is_5350 = 0; static struct ifreq ifr; @@ -425,17 +426,18 @@ static int handle_reset(void *driver, char *buf, int nr) static int __init robo_init() { - char *device = "ethX"; int notfound = 1; + device = strdup("ethX"); for (device[3] = '0'; (device[3] <= '3') && notfound; device[3]++) { notfound = robo_probe(device); } device[3]--; - if (notfound) + if (notfound) { + kfree(device); return -ENODEV; - else { + } else { switch_config cfg[] = { {"enable", handle_enable_read, handle_enable_write}, {"enable_vlan", handle_enable_vlan_read, handle_enable_vlan_write}, @@ -465,6 +467,7 @@ static int __init robo_init() static void __exit robo_exit() { switch_unregister_driver(DRIVER_NAME); + kfree(device); } |