iprowifi3945: Add missing if_free_inplace.

Fixes the new KDL in #14265.
This commit is contained in:
Augustin Cavalier
2025-06-30 21:30:12 -04:00
parent 944c5ed17d
commit c582c91f05
@@ -271,7 +271,7 @@ wpi_attach(struct device *parent, struct device *self, void *aux)
PCI_CAP_PCIEXPRESS, &sc->sc_cap_off, NULL); PCI_CAP_PCIEXPRESS, &sc->sc_cap_off, NULL);
if (error == 0) { if (error == 0) {
printf(": PCIe capability structure not found!\n"); printf(": PCIe capability structure not found!\n");
return -1; goto fail;
} }
/* Clear device-specific "PCI retry timeout" register (41h). */ /* Clear device-specific "PCI retry timeout" register (41h). */
@@ -284,13 +284,13 @@ wpi_attach(struct device *parent, struct device *self, void *aux)
&sc->sc_sh, NULL, &sc->sc_sz, 0); &sc->sc_sh, NULL, &sc->sc_sz, 0);
if (error != 0) { if (error != 0) {
printf(": can't map mem space\n"); printf(": can't map mem space\n");
return -1; goto fail;
} }
/* Install interrupt handler. */ /* Install interrupt handler. */
if (pci_intr_map_msi(pa, &ih) != 0 && pci_intr_map(pa, &ih) != 0) { if (pci_intr_map_msi(pa, &ih) != 0 && pci_intr_map(pa, &ih) != 0) {
printf(": can't map interrupt\n"); printf(": can't map interrupt\n");
return -1; goto fail;
} }
intrstr = pci_intr_string(sc->sc_pct, ih); intrstr = pci_intr_string(sc->sc_pct, ih);
sc->sc_ih = pci_intr_establish(sc->sc_pct, ih, IPL_NET, wpi_intr, sc, sc->sc_ih = pci_intr_establish(sc->sc_pct, ih, IPL_NET, wpi_intr, sc,
@@ -300,26 +300,26 @@ wpi_attach(struct device *parent, struct device *self, void *aux)
if (intrstr != NULL) if (intrstr != NULL)
printf(" at %s", intrstr); printf(" at %s", intrstr);
printf("\n"); printf("\n");
return -1; goto fail;
} }
printf(": %s", intrstr); printf(": %s", intrstr);
/* Power ON adapter. */ /* Power ON adapter. */
if ((error = wpi_apm_init(sc)) != 0) { if ((error = wpi_apm_init(sc)) != 0) {
printf(": could not power ON adapter\n"); printf(": could not power ON adapter\n");
return -1; goto fail;
} }
/* Read MAC address, channels, etc from EEPROM. */ /* Read MAC address, channels, etc from EEPROM. */
if ((error = wpi_read_eeprom(sc)) != 0) { if ((error = wpi_read_eeprom(sc)) != 0) {
printf(": could not read EEPROM\n"); printf(": could not read EEPROM\n");
return -1; goto fail;
} }
/* Allocate DMA memory for firmware transfers. */ /* Allocate DMA memory for firmware transfers. */
if ((error = wpi_alloc_fwmem(sc)) != 0) { if ((error = wpi_alloc_fwmem(sc)) != 0) {
printf(": could not allocate memory for firmware\n"); printf(": could not allocate memory for firmware\n");
return -1; goto fail;
} }
/* Allocate shared area. */ /* Allocate shared area. */
@@ -409,6 +409,10 @@ fail2: while (--i >= 0)
wpi_free_tx_ring(sc, &sc->txq[i]); wpi_free_tx_ring(sc, &sc->txq[i]);
wpi_free_shared(sc); wpi_free_shared(sc);
fail1: wpi_free_fwmem(sc); fail1: wpi_free_fwmem(sc);
#ifdef __HAIKU__
fail:
if_free_inplace(ifp);
#endif
return -1; return -1;
} }