Browse Source

ide-cs: fix releasing I/O resources

hwif content is already freed after ide_release() call so cache
hwif->io_ports.{data,ctl}_addr in local variables in ide_detach().

This fixes post-2.6.25 regression.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Bartlomiej Zolnierkiewicz 17 years ago
parent
commit
fbc69fd9b7
1 changed files with 6 additions and 2 deletions
  1. 6 2
      drivers/ide/legacy/ide-cs.c

+ 6 - 2
drivers/ide/legacy/ide-cs.c

@@ -135,13 +135,17 @@ static void ide_detach(struct pcmcia_device *link)
 {
 {
     ide_info_t *info = link->priv;
     ide_info_t *info = link->priv;
     ide_hwif_t *hwif = info->hwif;
     ide_hwif_t *hwif = info->hwif;
+    unsigned long data_addr, ctl_addr;
 
 
     DEBUG(0, "ide_detach(0x%p)\n", link);
     DEBUG(0, "ide_detach(0x%p)\n", link);
 
 
+    data_addr = hwif->io_ports.data_addr;
+    ctl_addr  = hwif->io_ports.ctl_addr;
+
     ide_release(link);
     ide_release(link);
 
 
-    release_region(hwif->io_ports.ctl_addr, 1);
-    release_region(hwif->io_ports.data_addr, 8);
+    release_region(ctl_addr, 1);
+    release_region(data_addr, 8);
 
 
     kfree(info);
     kfree(info);
 } /* ide_detach */
 } /* ide_detach */