aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorDominik Brodowski <linux@dominikbrodowski.de>2005-01-11 03:22:46 -0800
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-01-11 03:22:46 -0800
commit182d428d6475d7d92759bba151f2857f03eb0866 (patch)
treec7e8e4c02debfe6ff52629c97aab27dbba45c443 /drivers
parenteff0cf2fcc19854c7db6b152d49cc0bf8d5cacdb (diff)
downloadhistory-182d428d6475d7d92759bba151f2857f03eb0866.tar.gz
[PATCH] pcmcia: use pcmcia_device to mark clients as stale
Use pcmcia_dev instead of the "client" single-linked list to mark clients as stale. Signed-off-by: Dominik Brodowski <linux@brodo.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/pcmcia/ds.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/pcmcia/ds.c b/drivers/pcmcia/ds.c
index 63029a08e24a35..486375a5bed3da 100644
--- a/drivers/pcmcia/ds.c
+++ b/drivers/pcmcia/ds.c
@@ -590,8 +590,9 @@ static int send_event(struct pcmcia_socket *s, event_t event, int priority)
static int ds_event(struct pcmcia_socket *skt, event_t event, int priority)
{
struct pcmcia_bus_socket *s = skt->pcmcia;
+ struct pcmcia_device *p_dev;
+ unsigned long flags;
int ret = 0;
- client_t *client;
ds_dbg(1, "ds_event(0x%06x, %d, 0x%p)\n",
event, priority, s);
@@ -602,8 +603,10 @@ static int ds_event(struct pcmcia_socket *skt, event_t event, int priority)
s->state &= ~DS_SOCKET_PRESENT;
send_event(skt, event, priority);
handle_event(s, event);
- for (client = skt->clients; client; client = client->next)
- client->state |= CLIENT_STALE;
+ spin_lock_irqsave(&pcmcia_dev_list_lock, flags);
+ list_for_each_entry(p_dev, &s->devices_list, socket_device_list)
+ p_dev->client->state |= CLIENT_STALE;
+ spin_unlock_irqrestore(&pcmcia_dev_list_lock, flags);
break;
case CS_EVENT_CARD_INSERTION: