|
@@ -1074,23 +1074,7 @@ static int init_irq (ide_hwif_t *hwif)
|
|
mutex_unlock(&ide_cfg_mtx);
|
|
mutex_unlock(&ide_cfg_mtx);
|
|
return 0;
|
|
return 0;
|
|
out_unlink:
|
|
out_unlink:
|
|
- spin_lock_irq(&ide_lock);
|
|
|
|
- if (hwif->next == hwif) {
|
|
|
|
- BUG_ON(hwgroup->hwif != hwif);
|
|
|
|
- kfree(hwgroup);
|
|
|
|
- } else {
|
|
|
|
- ide_hwif_t *g;
|
|
|
|
- g = hwgroup->hwif;
|
|
|
|
- while (g->next != hwif)
|
|
|
|
- g = g->next;
|
|
|
|
- g->next = hwif->next;
|
|
|
|
- if (hwgroup->hwif == hwif) {
|
|
|
|
- BUG_ON(hwgroup->drive);
|
|
|
|
- hwgroup->hwif = g;
|
|
|
|
- }
|
|
|
|
- BUG_ON(hwgroup->hwif == hwif);
|
|
|
|
- }
|
|
|
|
- spin_unlock_irq(&ide_lock);
|
|
|
|
|
|
+ ide_remove_port_from_hwgroup(hwif);
|
|
out_up:
|
|
out_up:
|
|
mutex_unlock(&ide_cfg_mtx);
|
|
mutex_unlock(&ide_cfg_mtx);
|
|
return 1;
|
|
return 1;
|