]> git.hungrycats.org Git - linux/commitdiff
[PATCH] pcmcia: use pcmcia_device to mark clients as stale
authorDominik Brodowski <linux@dominikbrodowski.de>
Tue, 11 Jan 2005 11:22:46 +0000 (03:22 -0800)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Tue, 11 Jan 2005 11:22:46 +0000 (03:22 -0800)
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>
drivers/pcmcia/ds.c

index 63029a08e24a352591c8601ade115930c84ee1ae..486375a5bed3daac677b1f528c5e0c55b5ad3e98 100644 (file)
@@ -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: