projects
/
openwrt
/
svn-archive
/
archive.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
ff11c47
)
ubsec: Fix bus disable ordering and fix probe error path.
author
Michael Büsch
<mb@bu3sch.de>
Thu, 26 Feb 2009 19:19:59 +0000
(19:19 +0000)
committer
Michael Büsch
<mb@bu3sch.de>
Thu, 26 Feb 2009 19:19:59 +0000
(19:19 +0000)
SVN-Revision: 14677
package/ubsec_ssb/src/ubsec_ssb.c
patch
|
blob
|
history
diff --git
a/package/ubsec_ssb/src/ubsec_ssb.c
b/package/ubsec_ssb/src/ubsec_ssb.c
index 4ca06d6631d34aecf207287abc1515bb6b1dd28e..699450414084c863cee32854d69aacf2c8e8d085 100644
(file)
--- a/
package/ubsec_ssb/src/ubsec_ssb.c
+++ b/
package/ubsec_ssb/src/ubsec_ssb.c
@@
-494,7
+494,7
@@
__devinit ubsec_ssb_probe(struct ssb_device *sdev,
err = ssb_bus_powerup(sdev->bus, 0);
if (err) {
dev_err(sdev->dev, "Failed to powerup the bus\n");
err = ssb_bus_powerup(sdev->bus, 0);
if (err) {
dev_err(sdev->dev, "Failed to powerup the bus\n");
-
goto err_powerup
;
+
goto err_out
;
}
err = request_irq(sdev->irq, (irq_handler_t)ubsec_ssb_isr,
}
err = request_irq(sdev->irq, (irq_handler_t)ubsec_ssb_isr,
@@
-508,7
+508,7
@@
__devinit ubsec_ssb_probe(struct ssb_device *sdev,
if (err) {
dev_err(sdev->dev,
"Required 32BIT DMA mask unsupported by the system.\n");
if (err) {
dev_err(sdev->dev,
"Required 32BIT DMA mask unsupported by the system.\n");
- goto err_out_
powerdown
;
+ goto err_out_
free_irq
;
}
printk(KERN_INFO "Sentry5(tm) ROBOGateway(tm) IPSec Core at IRQ %u\n",
}
printk(KERN_INFO "Sentry5(tm) ROBOGateway(tm) IPSec Core at IRQ %u\n",
@@
-520,7
+520,7
@@
__devinit ubsec_ssb_probe(struct ssb_device *sdev,
ssb_device_enable(sdev, 0);
if (ubsec_attach(sdev, ent, sdev->dev) != 0)
ssb_device_enable(sdev, 0);
if (ubsec_attach(sdev, ent, sdev->dev) != 0)
- goto err_
disable_interrupt
;
+ goto err_
out_disable
;
#ifdef UBSEC_DEBUG
procdebug = create_proc_entry(DRV_MODULE_NAME, S_IRUSR, NULL);
#ifdef UBSEC_DEBUG
procdebug = create_proc_entry(DRV_MODULE_NAME, S_IRUSR, NULL);
@@
-534,15
+534,17
@@
__devinit ubsec_ssb_probe(struct ssb_device *sdev,
return 0;
return 0;
-err_disable_interrupt:
+err_out_disable:
+ ssb_device_disable(sdev, 0);
+
+err_out_free_irq:
free_irq(sdev->irq, sdev);
err_out_powerdown:
ssb_bus_may_powerdown(sdev->bus);
free_irq(sdev->irq, sdev);
err_out_powerdown:
ssb_bus_may_powerdown(sdev->bus);
-err_powerup:
- ssb_device_disable(sdev, 0);
- return err;
+err_out:
+ return err;
}
static void __devexit ubsec_ssb_remove(struct ssb_device *sdev) {
}
static void __devexit ubsec_ssb_remove(struct ssb_device *sdev) {
@@
-587,8
+589,8
@@
static void __devexit ubsec_ssb_remove(struct ssb_device *sdev) {
sc->sc_queuea[i] = NULL;
}
sc->sc_queuea[i] = NULL;
}
- ssb_bus_may_powerdown(sdev->bus);
ssb_device_disable(sdev, 0);
ssb_device_disable(sdev, 0);
+ ssb_bus_may_powerdown(sdev->bus);
ssb_set_drvdata(sdev, NULL);
#ifdef UBSEC_DEBUG
ssb_set_drvdata(sdev, NULL);
#ifdef UBSEC_DEBUG