From 1e016809a707fe254e17ec56a745d2de6dcd2fdb Mon Sep 17 00:00:00 2001 From: Frank Blaschka Date: Mon, 19 Dec 2011 22:56:35 +0000 Subject: [PATCH] --- yaml --- r: 279035 b: refs/heads/master c: 3f36b890dea7c2fc2fe25fb507552a46a226048a h: refs/heads/master i: 279033: b2af13cccade3ceadffb9c958622f0424019038e 279031: 70e0a5464485dfa6ba8b248a1a06c86922fa332c v: v3 --- [refs] | 2 +- trunk/drivers/s390/net/qeth_core_main.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 9f37861aaa7d..a55df191ed36 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 08e3356cc2c0ce8f3359b3d2636c897ac71240ce +refs/heads/master: 3f36b890dea7c2fc2fe25fb507552a46a226048a diff --git a/trunk/drivers/s390/net/qeth_core_main.c b/trunk/drivers/s390/net/qeth_core_main.c index fff57de78943..680040572bcb 100644 --- a/trunk/drivers/s390/net/qeth_core_main.c +++ b/trunk/drivers/s390/net/qeth_core_main.c @@ -1329,6 +1329,7 @@ static int qeth_do_start_thread(struct qeth_card *card, unsigned long thread) static void qeth_start_kernel_thread(struct work_struct *work) { + struct task_struct *ts; struct qeth_card *card = container_of(work, struct qeth_card, kernel_thread_starter); QETH_CARD_TEXT(card , 2, "strthrd"); @@ -1336,9 +1337,15 @@ static void qeth_start_kernel_thread(struct work_struct *work) if (card->read.state != CH_STATE_UP && card->write.state != CH_STATE_UP) return; - if (qeth_do_start_thread(card, QETH_RECOVER_THREAD)) - kthread_run(card->discipline.recover, (void *) card, + if (qeth_do_start_thread(card, QETH_RECOVER_THREAD)) { + ts = kthread_run(card->discipline.recover, (void *)card, "qeth_recover"); + if (IS_ERR(ts)) { + qeth_clear_thread_start_bit(card, QETH_RECOVER_THREAD); + qeth_clear_thread_running_bit(card, + QETH_RECOVER_THREAD); + } + } } static int qeth_setup_card(struct qeth_card *card)