mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-19 05:38:00 +00:00
ubsec: Fix bus disable ordering and fix probe error path.
SVN-Revision: 14677
This commit is contained in:
parent
86307b4db2
commit
689149cdbc
@ -494,7 +494,7 @@ __devinit ubsec_ssb_probe(struct ssb_device *sdev,
|
|||||||
err = ssb_bus_powerup(sdev->bus, 0);
|
err = ssb_bus_powerup(sdev->bus, 0);
|
||||||
if (err) {
|
if (err) {
|
||||||
dev_err(sdev->dev, "Failed to powerup the bus\n");
|
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) {
|
if (err) {
|
||||||
dev_err(sdev->dev,
|
dev_err(sdev->dev,
|
||||||
"Required 32BIT DMA mask unsupported by the system.\n");
|
"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);
|
ssb_device_enable(sdev, 0);
|
||||||
|
|
||||||
if (ubsec_attach(sdev, ent, sdev->dev) != 0)
|
if (ubsec_attach(sdev, ent, sdev->dev) != 0)
|
||||||
goto err_disable_interrupt;
|
goto err_out_disable;
|
||||||
|
|
||||||
#ifdef UBSEC_DEBUG
|
#ifdef UBSEC_DEBUG
|
||||||
procdebug = create_proc_entry(DRV_MODULE_NAME, S_IRUSR, NULL);
|
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);
|
free_irq(sdev->irq, sdev);
|
||||||
|
|
||||||
err_out_powerdown:
|
err_out_powerdown:
|
||||||
ssb_bus_may_powerdown(sdev->bus);
|
ssb_bus_may_powerdown(sdev->bus);
|
||||||
|
|
||||||
err_powerup:
|
err_out:
|
||||||
ssb_device_disable(sdev, 0);
|
return err;
|
||||||
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);
|
ssb_set_drvdata(sdev, NULL);
|
||||||
|
|
||||||
#ifdef UBSEC_DEBUG
|
#ifdef UBSEC_DEBUG
|
||||||
|
Loading…
Reference in New Issue
Block a user