X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=drivers%2Fpcmcia%2Fcs.c;h=c3b615c94b4bffaaff0ce3579e47c4c890a6a2c0;hb=cfe6f1dd57e0385ba95fd9061c88c7297a7da023;hp=8007bfda720a673604a57cc8c476f9575607bbec;hpb=aaa64485267c14e79382fbf7f4b0689a5de94fe9;p=firefly-linux-kernel-4.4.55.git diff --git a/drivers/pcmcia/cs.c b/drivers/pcmcia/cs.c index 8007bfda720a..c3b615c94b4b 100644 --- a/drivers/pcmcia/cs.c +++ b/drivers/pcmcia/cs.c @@ -621,8 +621,6 @@ static int pccardd(void *__skt) unsigned int events; unsigned int sysfs_events; - set_current_state(TASK_INTERRUPTIBLE); - spin_lock_irqsave(&skt->thread_lock, flags); events = skt->thread_events; skt->thread_events = 0; @@ -670,11 +668,15 @@ static int pccardd(void *__skt) if (kthread_should_stop()) break; + set_current_state(TASK_INTERRUPTIBLE); + schedule(); + + /* make sure we are running */ + __set_current_state(TASK_RUNNING); + try_to_freeze(); } - /* make sure we are running before we exit */ - set_current_state(TASK_RUNNING); /* shut down socket, if a device is still present */ if (skt->state & SOCKET_PRESENT) {