diff options
-rw-r--r-- | drivers/net/ppp_generic.c | 19 | ||||
-rw-r--r-- | drivers/net/wan/cosa.c | 10 | ||||
-rw-r--r-- | net/wanrouter/wanmain.c | 7 | ||||
-rw-r--r-- | net/wanrouter/wanproc.c | 7 |
4 files changed, 22 insertions, 21 deletions
diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c index e7b4187da05..6695a51e09e 100644 --- a/drivers/net/ppp_generic.c +++ b/drivers/net/ppp_generic.c | |||
@@ -40,7 +40,6 @@ | |||
40 | #include <linux/if_arp.h> | 40 | #include <linux/if_arp.h> |
41 | #include <linux/ip.h> | 41 | #include <linux/ip.h> |
42 | #include <linux/tcp.h> | 42 | #include <linux/tcp.h> |
43 | #include <linux/smp_lock.h> | ||
44 | #include <linux/spinlock.h> | 43 | #include <linux/spinlock.h> |
45 | #include <linux/rwsem.h> | 44 | #include <linux/rwsem.h> |
46 | #include <linux/stddef.h> | 45 | #include <linux/stddef.h> |
@@ -180,6 +179,7 @@ struct channel { | |||
180 | * channel.downl. | 179 | * channel.downl. |
181 | */ | 180 | */ |
182 | 181 | ||
182 | static DEFINE_MUTEX(ppp_mutex); | ||
183 | static atomic_t ppp_unit_count = ATOMIC_INIT(0); | 183 | static atomic_t ppp_unit_count = ATOMIC_INIT(0); |
184 | static atomic_t channel_count = ATOMIC_INIT(0); | 184 | static atomic_t channel_count = ATOMIC_INIT(0); |
185 | 185 | ||
@@ -362,7 +362,6 @@ static const int npindex_to_ethertype[NUM_NP] = { | |||
362 | */ | 362 | */ |
363 | static int ppp_open(struct inode *inode, struct file *file) | 363 | static int ppp_open(struct inode *inode, struct file *file) |
364 | { | 364 | { |
365 | cycle_kernel_lock(); | ||
366 | /* | 365 | /* |
367 | * This could (should?) be enforced by the permissions on /dev/ppp. | 366 | * This could (should?) be enforced by the permissions on /dev/ppp. |
368 | */ | 367 | */ |
@@ -582,7 +581,7 @@ static long ppp_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
582 | * this fd and reopening /dev/ppp. | 581 | * this fd and reopening /dev/ppp. |
583 | */ | 582 | */ |
584 | err = -EINVAL; | 583 | err = -EINVAL; |
585 | lock_kernel(); | 584 | mutex_lock(&ppp_mutex); |
586 | if (pf->kind == INTERFACE) { | 585 | if (pf->kind == INTERFACE) { |
587 | ppp = PF_TO_PPP(pf); | 586 | ppp = PF_TO_PPP(pf); |
588 | if (file == ppp->owner) | 587 | if (file == ppp->owner) |
@@ -594,7 +593,7 @@ static long ppp_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
594 | } else | 593 | } else |
595 | printk(KERN_DEBUG "PPPIOCDETACH file->f_count=%ld\n", | 594 | printk(KERN_DEBUG "PPPIOCDETACH file->f_count=%ld\n", |
596 | atomic_long_read(&file->f_count)); | 595 | atomic_long_read(&file->f_count)); |
597 | unlock_kernel(); | 596 | mutex_unlock(&ppp_mutex); |
598 | return err; | 597 | return err; |
599 | } | 598 | } |
600 | 599 | ||
@@ -602,7 +601,7 @@ static long ppp_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
602 | struct channel *pch; | 601 | struct channel *pch; |
603 | struct ppp_channel *chan; | 602 | struct ppp_channel *chan; |
604 | 603 | ||
605 | lock_kernel(); | 604 | mutex_lock(&ppp_mutex); |
606 | pch = PF_TO_CHANNEL(pf); | 605 | pch = PF_TO_CHANNEL(pf); |
607 | 606 | ||
608 | switch (cmd) { | 607 | switch (cmd) { |
@@ -624,7 +623,7 @@ static long ppp_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
624 | err = chan->ops->ioctl(chan, cmd, arg); | 623 | err = chan->ops->ioctl(chan, cmd, arg); |
625 | up_read(&pch->chan_sem); | 624 | up_read(&pch->chan_sem); |
626 | } | 625 | } |
627 | unlock_kernel(); | 626 | mutex_unlock(&ppp_mutex); |
628 | return err; | 627 | return err; |
629 | } | 628 | } |
630 | 629 | ||
@@ -634,7 +633,7 @@ static long ppp_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
634 | return -EINVAL; | 633 | return -EINVAL; |
635 | } | 634 | } |
636 | 635 | ||
637 | lock_kernel(); | 636 | mutex_lock(&ppp_mutex); |
638 | ppp = PF_TO_PPP(pf); | 637 | ppp = PF_TO_PPP(pf); |
639 | switch (cmd) { | 638 | switch (cmd) { |
640 | case PPPIOCSMRU: | 639 | case PPPIOCSMRU: |
@@ -782,7 +781,7 @@ static long ppp_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
782 | default: | 781 | default: |
783 | err = -ENOTTY; | 782 | err = -ENOTTY; |
784 | } | 783 | } |
785 | unlock_kernel(); | 784 | mutex_unlock(&ppp_mutex); |
786 | return err; | 785 | return err; |
787 | } | 786 | } |
788 | 787 | ||
@@ -795,7 +794,7 @@ static int ppp_unattached_ioctl(struct net *net, struct ppp_file *pf, | |||
795 | struct ppp_net *pn; | 794 | struct ppp_net *pn; |
796 | int __user *p = (int __user *)arg; | 795 | int __user *p = (int __user *)arg; |
797 | 796 | ||
798 | lock_kernel(); | 797 | mutex_lock(&ppp_mutex); |
799 | switch (cmd) { | 798 | switch (cmd) { |
800 | case PPPIOCNEWUNIT: | 799 | case PPPIOCNEWUNIT: |
801 | /* Create a new ppp unit */ | 800 | /* Create a new ppp unit */ |
@@ -846,7 +845,7 @@ static int ppp_unattached_ioctl(struct net *net, struct ppp_file *pf, | |||
846 | default: | 845 | default: |
847 | err = -ENOTTY; | 846 | err = -ENOTTY; |
848 | } | 847 | } |
849 | unlock_kernel(); | 848 | mutex_unlock(&ppp_mutex); |
850 | return err; | 849 | return err; |
851 | } | 850 | } |
852 | 851 | ||
diff --git a/drivers/net/wan/cosa.c b/drivers/net/wan/cosa.c index f0bd70fb650..04c6cd4333f 100644 --- a/drivers/net/wan/cosa.c +++ b/drivers/net/wan/cosa.c | |||
@@ -89,7 +89,6 @@ | |||
89 | #include <linux/spinlock.h> | 89 | #include <linux/spinlock.h> |
90 | #include <linux/mutex.h> | 90 | #include <linux/mutex.h> |
91 | #include <linux/device.h> | 91 | #include <linux/device.h> |
92 | #include <linux/smp_lock.h> | ||
93 | #include <asm/io.h> | 92 | #include <asm/io.h> |
94 | #include <asm/dma.h> | 93 | #include <asm/dma.h> |
95 | #include <asm/byteorder.h> | 94 | #include <asm/byteorder.h> |
@@ -174,6 +173,7 @@ struct cosa_data { | |||
174 | * Character device major number. 117 was allocated for us. | 173 | * Character device major number. 117 was allocated for us. |
175 | * The value of 0 means to allocate a first free one. | 174 | * The value of 0 means to allocate a first free one. |
176 | */ | 175 | */ |
176 | static DEFINE_MUTEX(cosa_chardev_mutex); | ||
177 | static int cosa_major = 117; | 177 | static int cosa_major = 117; |
178 | 178 | ||
179 | /* | 179 | /* |
@@ -944,7 +944,7 @@ static int cosa_open(struct inode *inode, struct file *file) | |||
944 | int n; | 944 | int n; |
945 | int ret = 0; | 945 | int ret = 0; |
946 | 946 | ||
947 | lock_kernel(); | 947 | mutex_lock(&cosa_chardev_mutex); |
948 | if ((n=iminor(file->f_path.dentry->d_inode)>>CARD_MINOR_BITS) | 948 | if ((n=iminor(file->f_path.dentry->d_inode)>>CARD_MINOR_BITS) |
949 | >= nr_cards) { | 949 | >= nr_cards) { |
950 | ret = -ENODEV; | 950 | ret = -ENODEV; |
@@ -976,7 +976,7 @@ static int cosa_open(struct inode *inode, struct file *file) | |||
976 | chan->rx_done = chrdev_rx_done; | 976 | chan->rx_done = chrdev_rx_done; |
977 | spin_unlock_irqrestore(&cosa->lock, flags); | 977 | spin_unlock_irqrestore(&cosa->lock, flags); |
978 | out: | 978 | out: |
979 | unlock_kernel(); | 979 | mutex_unlock(&cosa_chardev_mutex); |
980 | return ret; | 980 | return ret; |
981 | } | 981 | } |
982 | 982 | ||
@@ -1212,10 +1212,10 @@ static long cosa_chardev_ioctl(struct file *file, unsigned int cmd, | |||
1212 | struct cosa_data *cosa; | 1212 | struct cosa_data *cosa; |
1213 | long ret; | 1213 | long ret; |
1214 | 1214 | ||
1215 | lock_kernel(); | 1215 | mutex_lock(&cosa_chardev_mutex); |
1216 | cosa = channel->cosa; | 1216 | cosa = channel->cosa; |
1217 | ret = cosa_ioctl_common(cosa, channel, cmd, arg); | 1217 | ret = cosa_ioctl_common(cosa, channel, cmd, arg); |
1218 | unlock_kernel(); | 1218 | mutex_unlock(&cosa_chardev_mutex); |
1219 | return ret; | 1219 | return ret; |
1220 | } | 1220 | } |
1221 | 1221 | ||
diff --git a/net/wanrouter/wanmain.c b/net/wanrouter/wanmain.c index 258daa80ad9..2bf23406637 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 c44d96b3a43..11f25c7a7a0 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) |