diff options
author | Tejun Heo <tj@kernel.org> | 2009-07-03 18:13:18 -0400 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2009-07-03 18:13:18 -0400 |
commit | c43768cbb7655ea5ff782ae250f6e2ef4297cf98 (patch) | |
tree | 3982e41dde3eecaa3739a5d1a8ed18d04bd74f01 /drivers/net/wireless/iwmc3200wifi/sdio.c | |
parent | 1a8dd307cc0a2119be4e578c517795464e6dabba (diff) | |
parent | 746a99a5af60ee676afa2ba469ccd1373493c7e7 (diff) |
Merge branch 'master' into for-next
Pull linus#master to merge PER_CPU_DEF_ATTRIBUTES and alpha build fix
changes. As alpha in percpu tree uses 'weak' attribute instead of
inline assembly, there's no need for __used attribute.
Conflicts:
arch/alpha/include/asm/percpu.h
arch/mn10300/kernel/vmlinux.lds.S
include/linux/percpu-defs.h
Diffstat (limited to 'drivers/net/wireless/iwmc3200wifi/sdio.c')
-rw-r--r-- | drivers/net/wireless/iwmc3200wifi/sdio.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/net/wireless/iwmc3200wifi/sdio.c b/drivers/net/wireless/iwmc3200wifi/sdio.c index b54da677b371..916681837fd2 100644 --- a/drivers/net/wireless/iwmc3200wifi/sdio.c +++ b/drivers/net/wireless/iwmc3200wifi/sdio.c | |||
@@ -454,10 +454,18 @@ static int iwm_sdio_probe(struct sdio_func *func, | |||
454 | 454 | ||
455 | INIT_WORK(&hw->isr_worker, iwm_sdio_isr_worker); | 455 | INIT_WORK(&hw->isr_worker, iwm_sdio_isr_worker); |
456 | 456 | ||
457 | ret = iwm_if_add(iwm); | ||
458 | if (ret) { | ||
459 | dev_err(dev, "add SDIO interface failed\n"); | ||
460 | goto destroy_wq; | ||
461 | } | ||
462 | |||
457 | dev_info(dev, "IWM SDIO probe\n"); | 463 | dev_info(dev, "IWM SDIO probe\n"); |
458 | 464 | ||
459 | return 0; | 465 | return 0; |
460 | 466 | ||
467 | destroy_wq: | ||
468 | destroy_workqueue(hw->isr_wq); | ||
461 | debugfs_exit: | 469 | debugfs_exit: |
462 | iwm_debugfs_exit(iwm); | 470 | iwm_debugfs_exit(iwm); |
463 | if_free: | 471 | if_free: |
@@ -471,9 +479,10 @@ static void iwm_sdio_remove(struct sdio_func *func) | |||
471 | struct iwm_priv *iwm = hw_to_iwm(hw); | 479 | struct iwm_priv *iwm = hw_to_iwm(hw); |
472 | struct device *dev = &func->dev; | 480 | struct device *dev = &func->dev; |
473 | 481 | ||
482 | iwm_if_remove(iwm); | ||
483 | destroy_workqueue(hw->isr_wq); | ||
474 | iwm_debugfs_exit(iwm); | 484 | iwm_debugfs_exit(iwm); |
475 | iwm_if_free(iwm); | 485 | iwm_if_free(iwm); |
476 | destroy_workqueue(hw->isr_wq); | ||
477 | 486 | ||
478 | sdio_set_drvdata(func, NULL); | 487 | sdio_set_drvdata(func, NULL); |
479 | 488 | ||