diff options
Diffstat (limited to 'net/wanrouter')
-rw-r--r-- | net/wanrouter/wanmain.c | 7 | ||||
-rw-r--r-- | net/wanrouter/wanproc.c | 7 |
2 files changed, 8 insertions, 6 deletions
diff --git a/net/wanrouter/wanmain.c b/net/wanrouter/wanmain.c index 258daa80ad92..2bf23406637a 100644 --- a/net/wanrouter/wanmain.c +++ b/net/wanrouter/wanmain.c | |||
@@ -48,7 +48,7 @@ | |||
48 | #include <linux/kernel.h> | 48 | #include <linux/kernel.h> |
49 | #include <linux/module.h> /* support for loadable modules */ | 49 | #include <linux/module.h> /* support for loadable modules */ |
50 | #include <linux/slab.h> /* kmalloc(), kfree() */ | 50 | #include <linux/slab.h> /* kmalloc(), kfree() */ |
51 | #include <linux/smp_lock.h> | 51 | #include <linux/mutex.h> |
52 | #include <linux/mm.h> | 52 | #include <linux/mm.h> |
53 | #include <linux/string.h> /* inline mem*, str* functions */ | 53 | #include <linux/string.h> /* inline mem*, str* functions */ |
54 | 54 | ||
@@ -71,6 +71,7 @@ | |||
71 | * WAN device IOCTL handlers | 71 | * WAN device IOCTL handlers |
72 | */ | 72 | */ |
73 | 73 | ||
74 | static DEFINE_MUTEX(wanrouter_mutex); | ||
74 | static int wanrouter_device_setup(struct wan_device *wandev, | 75 | static int wanrouter_device_setup(struct wan_device *wandev, |
75 | wandev_conf_t __user *u_conf); | 76 | wandev_conf_t __user *u_conf); |
76 | static int wanrouter_device_stat(struct wan_device *wandev, | 77 | static int wanrouter_device_stat(struct wan_device *wandev, |
@@ -376,7 +377,7 @@ long wanrouter_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
376 | if (wandev->magic != ROUTER_MAGIC) | 377 | if (wandev->magic != ROUTER_MAGIC) |
377 | return -EINVAL; | 378 | return -EINVAL; |
378 | 379 | ||
379 | lock_kernel(); | 380 | mutex_lock(&wanrouter_mutex); |
380 | switch (cmd) { | 381 | switch (cmd) { |
381 | case ROUTER_SETUP: | 382 | case ROUTER_SETUP: |
382 | err = wanrouter_device_setup(wandev, data); | 383 | err = wanrouter_device_setup(wandev, data); |
@@ -408,7 +409,7 @@ long wanrouter_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
408 | err = wandev->ioctl(wandev, cmd, arg); | 409 | err = wandev->ioctl(wandev, cmd, arg); |
409 | else err = -EINVAL; | 410 | else err = -EINVAL; |
410 | } | 411 | } |
411 | unlock_kernel(); | 412 | mutex_unlock(&wanrouter_mutex); |
412 | return err; | 413 | return err; |
413 | } | 414 | } |
414 | 415 | ||
diff --git a/net/wanrouter/wanproc.c b/net/wanrouter/wanproc.c index c44d96b3a437..11f25c7a7a05 100644 --- a/net/wanrouter/wanproc.c +++ b/net/wanrouter/wanproc.c | |||
@@ -27,7 +27,7 @@ | |||
27 | #include <linux/module.h> | 27 | #include <linux/module.h> |
28 | #include <linux/wanrouter.h> /* WAN router API definitions */ | 28 | #include <linux/wanrouter.h> /* WAN router API definitions */ |
29 | #include <linux/seq_file.h> | 29 | #include <linux/seq_file.h> |
30 | #include <linux/smp_lock.h> | 30 | #include <linux/mutex.h> |
31 | 31 | ||
32 | #include <net/net_namespace.h> | 32 | #include <net/net_namespace.h> |
33 | #include <asm/io.h> | 33 | #include <asm/io.h> |
@@ -66,6 +66,7 @@ | |||
66 | * /proc/net/router | 66 | * /proc/net/router |
67 | */ | 67 | */ |
68 | 68 | ||
69 | static DEFINE_MUTEX(config_mutex); | ||
69 | static struct proc_dir_entry *proc_router; | 70 | static struct proc_dir_entry *proc_router; |
70 | 71 | ||
71 | /* Strings */ | 72 | /* Strings */ |
@@ -85,7 +86,7 @@ static void *r_start(struct seq_file *m, loff_t *pos) | |||
85 | struct wan_device *wandev; | 86 | struct wan_device *wandev; |
86 | loff_t l = *pos; | 87 | loff_t l = *pos; |
87 | 88 | ||
88 | lock_kernel(); | 89 | mutex_lock(&config_mutex); |
89 | if (!l--) | 90 | if (!l--) |
90 | return SEQ_START_TOKEN; | 91 | return SEQ_START_TOKEN; |
91 | for (wandev = wanrouter_router_devlist; l-- && wandev; | 92 | for (wandev = wanrouter_router_devlist; l-- && wandev; |
@@ -104,7 +105,7 @@ static void *r_next(struct seq_file *m, void *v, loff_t *pos) | |||
104 | static void r_stop(struct seq_file *m, void *v) | 105 | static void r_stop(struct seq_file *m, void *v) |
105 | __releases(kernel_lock) | 106 | __releases(kernel_lock) |
106 | { | 107 | { |
107 | unlock_kernel(); | 108 | mutex_unlock(&config_mutex); |
108 | } | 109 | } |
109 | 110 | ||
110 | static int config_show(struct seq_file *m, void *v) | 111 | static int config_show(struct seq_file *m, void *v) |