staging: unisys: visornic: delay start of worker thread until netdev created
authorTim Sell <Timothy.Sell@unisys.com>
Thu, 9 Jul 2015 17:27:50 +0000 (13:27 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 15 Jul 2015 01:34:59 +0000 (18:34 -0700)
This only makes sense, since the worker thread depends upon the netdev
existing.

Signed-off-by: Tim Sell <Timothy.Sell@unisys.com>
Signed-off-by: Benjamin Romer <benjamin.romer@unisys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/unisys/visornic/visornic_main.c

index 14977ad356cfb0e52822707bc5cc29182b6356a1..07e89ad92a6660c9e1ce9b27196a824343d9c2c4 100644 (file)
@@ -1978,15 +1978,11 @@ static int visornic_probe(struct visor_device *dev)
                goto cleanup_xmit_cmdrsp;
        }
 
-       devdata->thread_wait_ms = 2;
-       visor_thread_start(&devdata->threadinfo, process_incoming_rsps,
-                          devdata, "vnic_incoming");
-
        err = register_netdev(netdev);
        if (err) {
                dev_err(&dev->device,
                        "%s register_netdev failed (%d)\n", __func__, err);
-               goto cleanup_thread_stop;
+               goto cleanup_xmit_cmdrsp;
        }
 
        /* create debgug/sysfs directories */
@@ -1997,16 +1993,17 @@ static int visornic_probe(struct visor_device *dev)
                        "%s debugfs_create_dir %s failed\n",
                        __func__, netdev->name);
                err = -ENOMEM;
-               goto cleanup_thread_stop;
+               goto cleanup_xmit_cmdrsp;
        }
 
+       devdata->thread_wait_ms = 2;
+       visor_thread_start(&devdata->threadinfo, process_incoming_rsps,
+                          devdata, "vnic_incoming");
+
        dev_info(&dev->device, "%s success netdev=%s\n",
                 __func__, netdev->name);
        return 0;
 
-cleanup_thread_stop:
-       visor_thread_stop(&devdata->threadinfo);
-
 cleanup_xmit_cmdrsp:
        kfree(devdata->xmit_cmdrsp);