aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pcmcia/socket_sysfs.c
diff options
context:
space:
mode:
authorDominik Brodowski <linux@dominikbrodowski.net>2006-01-10 15:20:36 -0500
committerDominik Brodowski <linux@dominikbrodowski.net>2006-03-31 10:02:19 -0500
commit7fe908dd11e0c947bb72baa5b001d7abe5a420d5 (patch)
treedbd6db7a79476aee256a453f33bbe08c6b3a0cc1 /drivers/pcmcia/socket_sysfs.c
parentcbbddd1046d44d90d31c7f246ed0207117602b89 (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.c9
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