]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/pcmcia/cs.c
[PATCH] PCI: removed unneeded .owner field from struct pci_driver
[linux-2.6-omap-h63xx.git] / drivers / pcmcia / cs.c
index e39178fc59d08efb74efe4eaf1e8ba80a6fbdace..234cdca6fe137e8967fbe43bf6c71557a84c434b 100644 (file)
@@ -331,10 +331,8 @@ static void shutdown_socket(struct pcmcia_socket *s)
        cb_free(s);
 #endif
        s->functions = 0;
-       if (s->config) {
-               kfree(s->config);
-               s->config = NULL;
-       }
+       kfree(s->config);
+       s->config = NULL;
 
        {
                int status;
@@ -654,9 +652,10 @@ static int pccardd(void *__skt)
                skt->thread = NULL;
                complete_and_exit(&skt->thread_done, 0);
        }
-       complete(&skt->thread_done);
 
        add_wait_queue(&skt->thread_wait, &wait);
+       complete(&skt->thread_done);
+
        for (;;) {
                unsigned long flags;
                unsigned int events;
@@ -682,12 +681,15 @@ static int pccardd(void *__skt)
                        continue;
                }
 
-               schedule();
-               try_to_freeze();
-
                if (!skt->thread)
                        break;
+
+               schedule();
+               try_to_freeze();
        }
+       /* make sure we are running before we exit */
+       set_current_state(TASK_RUNNING);
+
        remove_wait_queue(&skt->thread_wait, &wait);
 
        /* remove from the device core */