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

Reply via email to