staging: usbip: fix shutdown problems.
authorArjan Mels <arjan.mels@gmx.net>
Tue, 5 Apr 2011 18:24:56 +0000 (20:24 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 6 Apr 2011 22:51:13 +0000 (15:51 -0700)
When shuting down the tcp_rx and tcp_tx threads first check if they are
not closed already (maybe because an error caused them to return).

Signed-off-by: Arjan Mels <arjan.mels@gmx.net>
Cc: Takahiro Hirofuchi <hirofuchi@users.sourceforge.net>
Cc: Max Vozeler <max@vozeler.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: stable <stable@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/usbip/stub_dev.c

index 8214c353d9f5224921c9d6d6962c4b31f2a979ff..bce7d039346c264cadfbee4d8d917678ed957f75 100644 (file)
@@ -220,8 +220,10 @@ static void stub_shutdown_connection(struct usbip_device *ud)
        }
 
        /* 1. stop threads */
-       kthread_stop(ud->tcp_rx);
-       kthread_stop(ud->tcp_tx);
+       if (ud->tcp_rx && !task_is_dead(ud->tcp_rx))
+               kthread_stop(ud->tcp_rx);
+       if (ud->tcp_tx && !task_is_dead(ud->tcp_tx))
+               kthread_stop(ud->tcp_tx);
 
        /* 2. close the socket */
        /*