diff --git a/src/ahci.c b/src/ahci.c
index 879a991..f2cc71b 100644
--- a/src/ahci.c
+++ b/src/ahci.c
@@ -381,12 +381,26 @@
     return port;
 }
 
+static void ahci_port_release(struct ahci_port_s *port)
+{
+    ahci_port_reset(port->ctrl, port->pnr);
+    free(port->list);
+    free(port->fis);
+    free(port->cmd);
+    free(port);
+}
+
 static struct ahci_port_s* ahci_port_realloc(struct ahci_port_s *port)
 {
     struct ahci_port_s *tmp;
     u32 cmd;
 
     tmp = malloc_fseg(sizeof(*port));
+    if (!tmp) {
+        warn_noalloc();
+        ahci_port_release(port);
+        return NULL;
+    }
     *tmp = *port;
     free(port);
     port = tmp;
@@ -410,15 +424,6 @@
     return port;
 }
 
-static void ahci_port_release(struct ahci_port_s *port)
-{
-    ahci_port_reset(port->ctrl, port->pnr);
-    free(port->list);
-    free(port->fis);
-    free(port->cmd);
-    free(port);
-}
-
 #define MAXMODEL 40
 
 /* See ahci spec chapter 10.1 "Software Initialization of HBA" */
@@ -554,6 +559,8 @@
         ahci_port_release(port);
     else {
         port = ahci_port_realloc(port);
+        if (port == NULL)
+            return;
         dprintf(1, "AHCI/%d: registering: \"%s\"\n", port->pnr, port->desc);
         if (!port->atapi) {
             // Register with bcv system.
