Fix memory leak in error path. Found by llvm/scan-build. Also port (sc->sc_ports[port]) was not assigned, so "goto freeport;" seems wrong.
Index: ahci.c =================================================================== RCS file: /cvs/src/sys/dev/ic/ahci.c,v retrieving revision 1.22 diff -u -p -r1.22 ahci.c --- ahci.c 27 Aug 2015 18:47:29 -0000 1.22 +++ ahci.c 26 Sep 2015 09:29:57 -0000 @@ -460,7 +460,8 @@ ahci_port_alloc(struct ahci_softc *sc, u if (ap->ap_err_scratch == NULL) { printf("%s: unable to allocate DMA scratch buf for port %d\n", DEVNAME(sc), port); - goto freeport; + free(ap, M_DEVBUF, sizeof(*ap)); + goto reterr; } #ifdef AHCI_DEBUG