From 8764b18cddfe084e600109cef9d58d85e7a57531 Mon Sep 17 00:00:00 2001 From: nbd Date: Sat, 25 Mar 2006 14:31:42 +0000 Subject: [PATCH] fix gcc4-related bug in switch-robo git-svn-id: svn://svn.openwrt.org/openwrt/trunk/openwrt@3483 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/package/switch/src/switch-core.c | 7 ------- target/linux/package/switch/src/switch-core.h | 8 ++++++++ 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 821664637..6b59b9ba2 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 a6621eed2..5292469c0 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 7e4c4de29..b23fca644 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); } -- 2.20.1