aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pcmcia/cs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pcmcia/cs.c')
-rw-r--r--drivers/pcmcia/cs.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/pcmcia/cs.c b/drivers/pcmcia/cs.c
index e39178fc59d0..fabd3529cebc 100644
--- a/drivers/pcmcia/cs.c
+++ b/drivers/pcmcia/cs.c
@@ -654,9 +654,10 @@ static int pccardd(void *__skt)
654 skt->thread = NULL; 654 skt->thread = NULL;
655 complete_and_exit(&skt->thread_done, 0); 655 complete_and_exit(&skt->thread_done, 0);
656 } 656 }
657 complete(&skt->thread_done);
658 657
659 add_wait_queue(&skt->thread_wait, &wait); 658 add_wait_queue(&skt->thread_wait, &wait);
659 complete(&skt->thread_done);
660
660 for (;;) { 661 for (;;) {
661 unsigned long flags; 662 unsigned long flags;
662 unsigned int events; 663 unsigned int events;
@@ -682,11 +683,11 @@ static int pccardd(void *__skt)
682 continue; 683 continue;
683 } 684 }
684 685
685 schedule();
686 try_to_freeze();
687
688 if (!skt->thread) 686 if (!skt->thread)
689 break; 687 break;
688
689 schedule();
690 try_to_freeze();
690 } 691 }
691 remove_wait_queue(&skt->thread_wait, &wait); 692 remove_wait_queue(&skt->thread_wait, &wait);
692 693