]> git.pld-linux.org Git - packages/kernel.git/blame - atm-07-atm_dev_lock-sem.patch
- added -r to depmod to actually check modules instead of rejecting
[packages/kernel.git] / atm-07-atm_dev_lock-sem.patch
CommitLineData
b5a39c4d
JR
1
2 [PATCH][2.4] convert atm_dev_lock from spinlock to semaphore
3
4From: chas williams (chas@locutus.cmf.nrl.navy.mil)
5Date: Tue Feb 18 2003 - 16:31:55 EST
6
7same as the 2.5 patch just for 2.4 kernels.
8
9Index: linux/net/atm/addr.c
10===================================================================
11RCS file: /afs/cmf/project/cvsroot/linux/net/atm/addr.c,v
12retrieving revision 1.2
13retrieving revision 1.3
14diff -u -d -b -w -r1.2 -r1.3
15--- linux/net/atm/addr.c 5 Mar 2002 13:41:26 -0000 1.2
16+++ linux/net/atm/addr.c 14 Feb 2003 17:02:40 -0000 1.3
17@@ -42,7 +42,6 @@
18 */
19
20 static DECLARE_MUTEX(local_lock);
21-extern spinlock_t atm_dev_lock;
22
23 static void notify_sigd(struct atm_dev *dev)
24 {
25Index: linux/net/atm/common.c
26===================================================================
27RCS file: /afs/cmf/project/cvsroot/linux/net/atm/common.c,v
28retrieving revision 1.5
29retrieving revision 1.6
30diff -u -d -b -w -r1.5 -r1.6
31--- linux/net/atm/common.c 14 Feb 2003 16:59:38 -0000 1.5
32+++ linux/net/atm/common.c 14 Feb 2003 17:02:40 -0000 1.6
33@@ -18,6 +18,7 @@
34 #include <linux/capability.h>
35 #include <linux/mm.h> /* verify_area */
36 #include <linux/sched.h>
37+#include <linux/sem.h>
38 #include <linux/time.h> /* struct timeval */
39 #include <linux/skbuff.h>
40 #include <linux/bitops.h>
41@@ -27,6 +28,7 @@
42 #include <asm/atomic.h>
43 #include <asm/poll.h>
44 #include <asm/ioctls.h>
45+#include <asm/semaphore.h>
46
47 #if defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE)
48 #include <linux/atmlec.h>
49@@ -86,7 +88,7 @@
50 #define DPRINTK(format,args...)
51 #endif
52
53-spinlock_t atm_dev_lock = SPIN_LOCK_UNLOCKED;
54+DECLARE_MUTEX(atm_dev_sem);
55
56 static struct sk_buff *alloc_tx(struct atm_vcc *vcc,unsigned int size)
57 {
58@@ -154,7 +156,7 @@
59 vcc->dev->ops->free_rx_skb(vcc,skb);
60 else kfree_skb(skb);
61 }
62- spin_lock (&atm_dev_lock);
63+ down(&atm_dev_sem);
64 fops_put (vcc->dev->ops);
65 if (atomic_read(&vcc->rx_inuse))
66 printk(KERN_WARNING "atm_release_vcc: strange ... "
67@@ -162,11 +164,11 @@
68 atomic_read(&vcc->rx_inuse));
69 bind_vcc(vcc,NULL);
70 } else
71- spin_lock (&atm_dev_lock);
72+ down(&atm_dev_sem);
73
74 if (free_sk) free_atm_vcc_sk(sk);
75
76- spin_unlock (&atm_dev_lock);
77+ up(&atm_dev_sem);
78 }
79
80
81@@ -277,14 +279,14 @@
82 struct atm_dev *dev;
83 int return_val;
84
85- spin_lock (&atm_dev_lock);
86+ down(&atm_dev_sem);
87 dev = atm_find_dev(itf);
88 if (!dev)
89 return_val = -ENODEV;
90 else
91 return_val = atm_do_connect_dev(vcc,dev,vpi,vci);
92
93- spin_unlock (&atm_dev_lock);
94+ up(&atm_dev_sem);
95
96 return return_val;
97 }
98@@ -316,10 +318,10 @@
99 else {
100 struct atm_dev *dev;
101
102- spin_lock (&atm_dev_lock);
103+ down(&atm_dev_sem);
104 for (dev = atm_devs; dev; dev = dev->next)
105 if (!atm_do_connect_dev(vcc,dev,vpi,vci)) break;
106- spin_unlock (&atm_dev_lock);
107+ up(&atm_dev_sem);
108 if (!dev) return -ENODEV;
109 }
110 if (vpi == ATM_VPI_UNSPEC || vci == ATM_VCI_UNSPEC)
111@@ -561,7 +563,7 @@
112 int error,len,size,number, ret_val;
113
114 ret_val = 0;
115- spin_lock (&atm_dev_lock);
116+ down(&atm_dev_sem);
117 vcc = ATM_SD(sock);
118 switch (cmd) {
119 case SIOCOUTQ:
120@@ -961,7 +963,7 @@
121 ret_val = 0;
122
123 done:
124- spin_unlock (&atm_dev_lock);
125+ up(&atm_dev_sem);
126 return ret_val;
127 }
128
129Index: linux/net/atm/resources.c
130===================================================================
131RCS file: /afs/cmf/project/cvsroot/linux/net/atm/resources.c,v
132retrieving revision 1.2
133retrieving revision 1.3
134diff -u -d -b -w -r1.2 -r1.3
135--- linux/net/atm/resources.c 2 May 2002 16:56:23 -0000 1.2
136+++ linux/net/atm/resources.c 14 Feb 2003 17:02:40 -0000 1.3
137@@ -25,7 +25,7 @@
138 struct atm_dev *atm_devs = NULL;
139 static struct atm_dev *last_dev = NULL;
140 struct atm_vcc *nodev_vccs = NULL;
141-extern spinlock_t atm_dev_lock;
142+extern struct semaphore atm_dev_sem;
143
144
145 static struct atm_dev *alloc_atm_dev(const char *type)
146@@ -72,7 +72,7 @@
147 {
148 struct atm_dev *dev = NULL;
149
150- spin_lock(&atm_dev_lock);
151+ down(&atm_dev_sem);
152
153 dev = alloc_atm_dev(type);
154 if (!dev) {
155@@ -110,7 +110,7 @@
156 #endif
157
158 done:
159- spin_unlock(&atm_dev_lock);
160+ up(&atm_dev_sem);
161 return dev;
162 }
163
164@@ -120,9 +120,9 @@
165 #ifdef CONFIG_PROC_FS
166 if (dev->ops->proc_read) atm_proc_dev_deregister(dev);
167 #endif
168- spin_lock(&atm_dev_lock);
169+ down(&atm_dev_sem);
170 __free_atm_dev(dev);
171- spin_unlock(&atm_dev_lock);
172+ up(&atm_dev_sem);
173 }
174
175 void shutdown_atm_dev(struct atm_dev *dev)
176Index: linux/net/atm/signaling.c
177===================================================================
178RCS file: /afs/cmf/project/cvsroot/linux/net/atm/signaling.c,v
179retrieving revision 1.2
180retrieving revision 1.3
181diff -u -d -b -w -r1.2 -r1.3
182--- linux/net/atm/signaling.c 12 Feb 2003 20:57:47 -0000 1.2
183+++ linux/net/atm/signaling.c 14 Feb 2003 17:02:40 -0000 1.3
184@@ -33,7 +33,7 @@
185 struct atm_vcc *sigd = NULL;
186 static DECLARE_WAIT_QUEUE_HEAD(sigd_sleep);
187
188-extern spinlock_t atm_dev_lock;
189+extern struct semaphore atm_dev_sem;
190
191 static void sigd_put_skb(struct sk_buff *skb)
192 {
193@@ -220,9 +220,9 @@
194 skb_queue_purge(&vcc->recvq);
195 purge_vccs(nodev_vccs);
196
197- spin_lock (&atm_dev_lock);
198+ down(&atm_dev_sem);
199 for (dev = atm_devs; dev; dev = dev->next) purge_vccs(dev->vccs);
200- spin_unlock (&atm_dev_lock);
201+ up(&atm_dev_sem);
202 }
203
204
205To unsubscribe from this list: send the line "unsubscribe
206linux-kernel" in
207the body of a message to [8]majordomo@vger.kernel.org
208More majordomo info at [9]http://vger.kernel.org/majordomo-info.html
209Please read the FAQ at [10]http://www.tux.org/lkml/
This page took 0.118057 seconds and 4 git commands to generate.