firewire: ohci: fix DMA unmapping in an error path
authorStefan Richter <stefanr@s5r6.in-berlin.de>
Thu, 11 Aug 2011 18:40:42 +0000 (20:40 +0200)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Fri, 12 Aug 2011 13:30:08 +0000 (15:30 +0200)
If request_irq failed, we would pass wrong arguments to
dma_free_coherent.  https://bugzilla.redhat.com/show_bug.cgi?id=728185

Reported-by: Mads Kiilerich
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
drivers/firewire/ohci.c

index 4f6d72f87f6faf21e2f57ea1b6b81c192f8cc609..ded0c9bf96f44cf62216d4ef4e76c06ac15e24f5 100644 (file)
@@ -2178,8 +2178,13 @@ static int ohci_enable(struct fw_card *card,
                        ohci_driver_name, ohci)) {
                fw_error("Failed to allocate interrupt %d.\n", dev->irq);
                pci_disable_msi(dev);
-               dma_free_coherent(ohci->card.device, CONFIG_ROM_SIZE,
-                                 ohci->config_rom, ohci->config_rom_bus);
+
+               if (config_rom) {
+                       dma_free_coherent(ohci->card.device, CONFIG_ROM_SIZE,
+                                         ohci->next_config_rom,
+                                         ohci->next_config_rom_bus);
+                       ohci->next_config_rom = NULL;
+               }
                return -EIO;
        }