DragonFlyBSD Kernel Audit
DF-1921 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/raid/mrsas/mrsas_ioctl.c b/sys/dev/raid/mrsas/mrsas_ioctl.c
--- a/sys/dev/raid/mrsas/mrsas_ioctl.c
+++ b/sys/dev/raid/mrsas/mrsas_ioctl.c
@@ -236,18 +236,18 @@
                                 BUS_DMA_ALLOCNOW,       // flags
                                 &ioctl_data_tag[i])) {
             device_printf(sc->mrsas_dev, "Cannot allocate ioctl data tag\n");
-            return (ENOMEM);
+            goto out;
         }
         if (bus_dmamem_alloc(ioctl_data_tag[i], (void **)&ioctl_data_mem[i],
                 (BUS_DMA_NOWAIT | BUS_DMA_ZERO), &ioctl_data_dmamap[i])) {
             device_printf(sc->mrsas_dev, "Cannot allocate ioctl data mem\n");
-            return (ENOMEM);
+            goto out;
         }
         if (bus_dmamap_load(ioctl_data_tag[i], ioctl_data_dmamap[i],
                 ioctl_data_mem[i], ioctl_data_size, mrsas_alloc_cb,
                 &ioctl_data_phys_addr[i], BUS_DMA_NOWAIT)) {
             device_printf(sc->mrsas_dev, "Cannot load ioctl data mem\n");
-            return (ENOMEM);
+            goto out;
         }
 
         /* Save the physical address and length */
@@ -275,18 +275,18 @@
                                 BUS_DMA_ALLOCNOW,       // flags
                                 &ioctl_sense_tag)) {
             device_printf(sc->mrsas_dev, "Cannot allocate ioctl sense tag\n");
-            return (ENOMEM);
+            goto out;
         }
         if (bus_dmamem_alloc(ioctl_sense_tag, (void **)&ioctl_sense_mem,
                 (BUS_DMA_NOWAIT | BUS_DMA_ZERO), &ioctl_sense_dmamap)) {
             device_printf(sc->mrsas_dev, "Cannot allocate ioctl data mem\n");
-            return (ENOMEM);
+            goto out;
         }
         if (bus_dmamap_load(ioctl_sense_tag, ioctl_sense_dmamap,
                 ioctl_sense_mem, ioctl_sense_size, mrsas_alloc_cb,
                 &ioctl_sense_phys_addr, BUS_DMA_NOWAIT)) {
             device_printf(sc->mrsas_dev, "Cannot load ioctl sense mem\n");
-            return (ENOMEM);
+            goto out;
         }
         sense_ptr = 
             (unsigned long *)((unsigned long)cmd->frame + user_ioc->sense_off);