Fix the roboswitch code for the WRT350N
[openwrt.git] / package / switch / src / switch-core.c
index 6b59b9b..e0aa541 100644 (file)
@@ -32,7 +32,7 @@
  *     ports: same syntax as for nvram's vlan*ports (eg. "1 2 3 4 5*")
  */
 
-#include <linux/config.h>
+#include <linux/autoconf.h>
 #include <linux/module.h>
 #include <linux/init.h>
 #include <asm/uaccess.h>
@@ -64,8 +64,8 @@ static ssize_t switch_proc_read(struct file *file, char *buf, size_t count, loff
 static ssize_t switch_proc_write(struct file *file, const char *buf, size_t count, void *data);
 
 static struct file_operations switch_proc_fops = {
-       read: switch_proc_read,
-       write: switch_proc_write
+       .read = (ssize_t (*) (struct file *, char __user *, size_t, loff_t *))switch_proc_read,
+       .write = (ssize_t (*) (struct file *, const char __user *, size_t, loff_t *))switch_proc_write
 };
 
 static ssize_t switch_proc_read(struct file *file, char *buf, size_t count, loff_t *ppos)
@@ -100,6 +100,7 @@ static ssize_t switch_proc_read(struct file *file, char *buf, size_t count, loff
                len = 0;
        }
 
+       kfree(page);
        return len;
 }
 
@@ -138,18 +139,18 @@ static ssize_t switch_proc_write(struct file *file, const char *buf, size_t coun
 
 static int handle_driver_name(void *driver, char *buf, int nr)
 {
-       char *name = ((switch_driver *) driver)->name;
+       const char *name = ((switch_driver *) driver)->name;
        return sprintf(buf, "%s\n", name);
 }
 
 static int handle_driver_version(void *driver, char *buf, int nr)
 {
-       char *version = ((switch_driver *) driver)->version;
+       const char *version = ((switch_driver *) driver)->version;
        strcpy(buf, version);
        return sprintf(buf, "%s\n", version);
 }
 
-static void add_handler(switch_driver *driver, switch_config *handler, struct proc_dir_entry *parent, int nr)
+static void add_handler(switch_driver *driver, const switch_config *handler, struct proc_dir_entry *parent, int nr)
 {
        switch_priv *priv = (switch_priv *) driver->data;
        struct proc_dir_entry *p;
@@ -174,7 +175,7 @@ static void add_handler(switch_driver *driver, switch_config *handler, struct pr
        }
 }
 
-static inline void add_handlers(switch_driver *driver, switch_config *handlers, struct proc_dir_entry *parent, int nr)
+static inline void add_handlers(switch_driver *driver, const switch_config *handlers, struct proc_dir_entry *parent, int nr)
 {
        int i;
        
@@ -407,7 +408,7 @@ int switch_register_driver(switch_driver *driver)
        memcpy(new, driver, sizeof(switch_driver));
        new->name = strdup(driver->name);
        new->interface = strdup(driver->interface);
-       
+
        if ((ret = do_register(new)) < 0) {
                kfree(new->name);
                kfree(new);
@@ -436,7 +437,7 @@ void switch_unregister_driver(char *name) {
        }
 }
 
-static int __init switch_init()
+static int __init switch_init(void)
 {
        if ((switch_root = proc_mkdir("switch", NULL)) == NULL) {
                printk("%s: proc_mkdir failed.\n", __FILE__);
@@ -448,7 +449,7 @@ static int __init switch_init()
        return 0;
 }
 
-static void __exit switch_exit()
+static void __exit switch_exit(void)
 {
        remove_proc_entry("switch", NULL);
 }
This page took 0.028987 seconds and 4 git commands to generate.