diff options
author | Pavel Roskin <proski@gnu.org> | 2006-05-01 02:13:28 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2006-05-05 17:10:40 -0400 |
commit | 6cbaa330f1022abfc7419aaa11ee1a9291f0beb0 (patch) | |
tree | da9de71c1eef54be38880ef5ddc63e5622cae516 | |
parent | 9a568da2097ad3701ca575cb6d360d56ffeee446 (diff) |
[PATCH] orinoco: simplify locking, fix error handling in PCMCIA resume
Don't use flags in the spinlocks - the PCMCIA resume functions may not
be called under lock. Don't ignore any errors.
Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/orinoco_cs.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/spectrum_cs.c | 7 |
2 files changed, 6 insertions, 8 deletions
diff --git a/drivers/net/wireless/orinoco_cs.c b/drivers/net/wireless/orinoco_cs.c index 1c19c76d47af..b2aec4d9fbb1 100644 --- a/drivers/net/wireless/orinoco_cs.c +++ b/drivers/net/wireless/orinoco_cs.c | |||
@@ -415,7 +415,6 @@ static int orinoco_cs_resume(struct pcmcia_device *link) | |||
415 | struct orinoco_private *priv = netdev_priv(dev); | 415 | struct orinoco_private *priv = netdev_priv(dev); |
416 | struct orinoco_pccard *card = priv->card; | 416 | struct orinoco_pccard *card = priv->card; |
417 | int err = 0; | 417 | int err = 0; |
418 | unsigned long flags; | ||
419 | 418 | ||
420 | if (! test_bit(0, &card->hard_reset_in_progress)) { | 419 | if (! test_bit(0, &card->hard_reset_in_progress)) { |
421 | err = orinoco_reinit_firmware(dev); | 420 | err = orinoco_reinit_firmware(dev); |
@@ -425,7 +424,7 @@ static int orinoco_cs_resume(struct pcmcia_device *link) | |||
425 | return -EIO; | 424 | return -EIO; |
426 | } | 425 | } |
427 | 426 | ||
428 | spin_lock_irqsave(&priv->lock, flags); | 427 | spin_lock(&priv->lock); |
429 | 428 | ||
430 | netif_device_attach(dev); | 429 | netif_device_attach(dev); |
431 | priv->hw_unavailable--; | 430 | priv->hw_unavailable--; |
@@ -437,10 +436,10 @@ static int orinoco_cs_resume(struct pcmcia_device *link) | |||
437 | dev->name, err); | 436 | dev->name, err); |
438 | } | 437 | } |
439 | 438 | ||
440 | spin_unlock_irqrestore(&priv->lock, flags); | 439 | spin_unlock(&priv->lock); |
441 | } | 440 | } |
442 | 441 | ||
443 | return 0; | 442 | return err; |
444 | } | 443 | } |
445 | 444 | ||
446 | 445 | ||
diff --git a/drivers/net/wireless/spectrum_cs.c b/drivers/net/wireless/spectrum_cs.c index e9172eebfd01..7f9aa139c347 100644 --- a/drivers/net/wireless/spectrum_cs.c +++ b/drivers/net/wireless/spectrum_cs.c | |||
@@ -866,11 +866,10 @@ spectrum_cs_suspend(struct pcmcia_device *link) | |||
866 | { | 866 | { |
867 | struct net_device *dev = link->priv; | 867 | struct net_device *dev = link->priv; |
868 | struct orinoco_private *priv = netdev_priv(dev); | 868 | struct orinoco_private *priv = netdev_priv(dev); |
869 | unsigned long flags; | ||
870 | int err = 0; | 869 | int err = 0; |
871 | 870 | ||
872 | /* Mark the device as stopped, to block IO until later */ | 871 | /* Mark the device as stopped, to block IO until later */ |
873 | spin_lock_irqsave(&priv->lock, flags); | 872 | spin_lock(&priv->lock); |
874 | 873 | ||
875 | err = __orinoco_down(dev); | 874 | err = __orinoco_down(dev); |
876 | if (err) | 875 | if (err) |
@@ -880,9 +879,9 @@ spectrum_cs_suspend(struct pcmcia_device *link) | |||
880 | netif_device_detach(dev); | 879 | netif_device_detach(dev); |
881 | priv->hw_unavailable++; | 880 | priv->hw_unavailable++; |
882 | 881 | ||
883 | spin_unlock_irqrestore(&priv->lock, flags); | 882 | spin_unlock(&priv->lock); |
884 | 883 | ||
885 | return 0; | 884 | return err; |
886 | } | 885 | } |
887 | 886 | ||
888 | static int | 887 | static int |