aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging
diff options
context:
space:
mode:
authorRoel Kluin <roel.kluin@gmail.com>2008-12-19 23:37:30 +0100
committerGreg Kroah-Hartman <gregkh@kvm.kroah.org>2009-01-28 15:49:05 -0800
commit05d6d677ab4b975697c6a987f1dffdc55d61a160 (patch)
tree73fa9a7d796f164eb6ed6b8c7737f9c0f9ac5cef /drivers/staging
parentstaging: agnx: drivers/staging/agnx/agnx.h needs <linux/io.h> (diff)
downloadlinux-dev-05d6d677ab4b975697c6a987f1dffdc55d61a160.tar.xz
linux-dev-05d6d677ab4b975697c6a987f1dffdc55d61a160.zip
Staging: usbip: usbip_start_threads(): handle kernel_thread failure
kernel_thread may fail, notice this. Signed-off-by: Roel Kluin <roel.kluin@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/usbip/usbip_common.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/staging/usbip/usbip_common.c b/drivers/staging/usbip/usbip_common.c
index 72e209276ea7..22f93dd0ba03 100644
--- a/drivers/staging/usbip/usbip_common.c
+++ b/drivers/staging/usbip/usbip_common.c
@@ -406,8 +406,20 @@ void usbip_start_threads(struct usbip_device *ud)
/*
* threads are invoked per one device (per one connection).
*/
- kernel_thread(usbip_thread, (void *)&ud->tcp_rx, 0);
- kernel_thread(usbip_thread, (void *)&ud->tcp_tx, 0);
+ int retval;
+
+ retval = kernel_thread(usbip_thread, (void *)&ud->tcp_rx, 0);
+ if (retval < 0) {
+ printk(KERN_ERR "Creating tcp_rx thread for ud %p failed.\n",
+ ud);
+ return;
+ }
+ retval = kernel_thread(usbip_thread, (void *)&ud->tcp_tx, 0);
+ if (retval < 0) {
+ printk(KERN_ERR "Creating tcp_tx thread for ud %p failed.\n",
+ ud);
+ return;
+ }
/* confirm threads are starting */
wait_for_completion(&ud->tcp_rx.thread_done);