From: Daniel Ritz <daniel.ritz@gmx.ch>

init_socket() enables interrupts, and the interrupt handler does a wakeup. 
Let's initialise that waitqueue head before turning on the interrupts.



 drivers/pcmcia/cs.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff -puN drivers/pcmcia/cs.c~yenta_socket-init-fix drivers/pcmcia/cs.c
--- 25/drivers/pcmcia/cs.c~yenta_socket-init-fix	2003-07-05 16:08:51.000000000 -0700
+++ 25-akpm/drivers/pcmcia/cs.c	2003-07-05 16:08:51.000000000 -0700
@@ -338,13 +338,13 @@ static int pcmcia_add_socket(struct clas
 	socket->erase_busy.next = socket->erase_busy.prev = &socket->erase_busy;
 	INIT_LIST_HEAD(&socket->cis_cache);
 	spin_lock_init(&socket->lock);
-
-	init_socket(socket);
-
 	init_completion(&socket->thread_done);
 	init_waitqueue_head(&socket->thread_wait);
 	init_MUTEX(&socket->skt_sem);
 	spin_lock_init(&socket->thread_lock);
+
+	init_socket(socket);
+
 	ret = kernel_thread(pccardd, socket, CLONE_KERNEL);
 	if (ret < 0)
 		return ret;

_