aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Belisko <marek.belisko@gmail.com>2010-11-10 04:04:30 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2010-11-10 19:28:29 -0500
commit2dab1ac81b4767095f96503a9ac093a68c6e9c95 (patch)
treecd1b4722833b8b4077dcf541c6a322d585b3994e
parentc8b124e21dbb7f4941f292fea446ce63d92d80dd (diff)
staging: ft1000: Create common return point.
When reg_ft1000_netdev() fails created kthread isn't stopped. So add return point for stopping thread. Signed-off-by: Marek Belisko <marek.belisko@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/staging/ft1000/ft1000-usb/ft1000_usb.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
index dcbc97c432e5..99e333902376 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
@@ -178,15 +178,13 @@ static int ft1000_probe(struct usb_interface *interface,
178 178
179 if (IS_ERR(pft1000info->pPollThread)) { 179 if (IS_ERR(pft1000info->pPollThread)) {
180 ret = PTR_ERR(pft1000info->pPollThread); 180 ret = PTR_ERR(pft1000info->pPollThread);
181 goto err_load; 181 goto err_thread;
182 } 182 }
183 183
184 msleep(500); 184 msleep(500);
185 185
186 while (!pft1000info->CardReady) { 186 while (!pft1000info->CardReady) {
187 if (gPollingfailed) { 187 if (gPollingfailed) {
188 if (pft1000info->pPollThread)
189 kthread_stop(pft1000info->pPollThread);
190 ret = -EIO; 188 ret = -EIO;
191 goto err_load; 189 goto err_load;
192 } 190 }
@@ -207,6 +205,8 @@ static int ft1000_probe(struct usb_interface *interface,
207 return 0; 205 return 0;
208 206
209err_load: 207err_load:
208 kthread_stop(pft1000info->pPollThread);
209err_thread:
210 kfree(pFileStart); 210 kfree(pFileStart);
211err_fw: 211err_fw:
212 kfree(ft1000dev); 212 kfree(ft1000dev);