diff options
author | Dominik Brodowski <linux@dominikbrodowski.net> | 2006-01-10 15:20:36 -0500 |
---|---|---|
committer | Dominik Brodowski <linux@dominikbrodowski.net> | 2006-03-31 10:02:19 -0500 |
commit | 7fe908dd11e0c947bb72baa5b001d7abe5a420d5 (patch) | |
tree | dbd6db7a79476aee256a453f33bbe08c6b3a0cc1 /drivers/pcmcia/socket_sysfs.c | |
parent | cbbddd1046d44d90d31c7f246ed0207117602b89 (diff) |
[PATCH] pcmcia: use mutexes instead of semaphores
Use mutexes in the PCMICA core, as they suffice for what needs to be done.
Includes a bugfix from and Signed-off-by Andrew Morton.
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Diffstat (limited to 'drivers/pcmcia/socket_sysfs.c')
-rw-r--r-- | drivers/pcmcia/socket_sysfs.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/pcmcia/socket_sysfs.c b/drivers/pcmcia/socket_sysfs.c index 5ab1cdef7c48..83c6b31133a8 100644 --- a/drivers/pcmcia/socket_sysfs.c +++ b/drivers/pcmcia/socket_sysfs.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/pm.h> | 25 | #include <linux/pm.h> |
26 | #include <linux/pci.h> | 26 | #include <linux/pci.h> |
27 | #include <linux/device.h> | 27 | #include <linux/device.h> |
28 | #include <linux/mutex.h> | ||
28 | #include <asm/system.h> | 29 | #include <asm/system.h> |
29 | #include <asm/irq.h> | 30 | #include <asm/irq.h> |
30 | 31 | ||
@@ -183,7 +184,7 @@ static ssize_t pccard_store_resource(struct class_device *dev, const char *buf, | |||
183 | s->resource_setup_done = 1; | 184 | s->resource_setup_done = 1; |
184 | spin_unlock_irqrestore(&s->lock, flags); | 185 | spin_unlock_irqrestore(&s->lock, flags); |
185 | 186 | ||
186 | down(&s->skt_sem); | 187 | mutex_lock(&s->skt_mutex); |
187 | if ((s->callback) && | 188 | if ((s->callback) && |
188 | (s->state & SOCKET_PRESENT) && | 189 | (s->state & SOCKET_PRESENT) && |
189 | !(s->state & SOCKET_CARDBUS)) { | 190 | !(s->state & SOCKET_CARDBUS)) { |
@@ -192,7 +193,7 @@ static ssize_t pccard_store_resource(struct class_device *dev, const char *buf, | |||
192 | module_put(s->callback->owner); | 193 | module_put(s->callback->owner); |
193 | } | 194 | } |
194 | } | 195 | } |
195 | up(&s->skt_sem); | 196 | mutex_unlock(&s->skt_mutex); |
196 | 197 | ||
197 | return count; | 198 | return count; |
198 | } | 199 | } |
@@ -322,7 +323,7 @@ static ssize_t pccard_store_cis(struct kobject *kobj, char *buf, loff_t off, siz | |||
322 | kfree(cis); | 323 | kfree(cis); |
323 | 324 | ||
324 | if (!ret) { | 325 | if (!ret) { |
325 | down(&s->skt_sem); | 326 | mutex_lock(&s->skt_mutex); |
326 | if ((s->callback) && (s->state & SOCKET_PRESENT) && | 327 | if ((s->callback) && (s->state & SOCKET_PRESENT) && |
327 | !(s->state & SOCKET_CARDBUS)) { | 328 | !(s->state & SOCKET_CARDBUS)) { |
328 | if (try_module_get(s->callback->owner)) { | 329 | if (try_module_get(s->callback->owner)) { |
@@ -330,7 +331,7 @@ static ssize_t pccard_store_cis(struct kobject *kobj, char *buf, loff_t off, siz | |||
330 | module_put(s->callback->owner); | 331 | module_put(s->callback->owner); |
331 | } | 332 | } |
332 | } | 333 | } |
333 | up(&s->skt_sem); | 334 | mutex_unlock(&s->skt_mutex); |
334 | } | 335 | } |
335 | 336 | ||
336 | 337 | ||