/* Initialise vdev subdevice */
        snprintf(name, sizeof(name), "vdev%dbuffer", rvdev->index);
        rvdev->dev.parent = &rproc->dev;
-       ret = copy_dma_range_map(&rvdev->dev, rproc->dev.parent);
-       if (ret)
-               return ret;
        rvdev->dev.release = rproc_rvdev_release;
        dev_set_name(&rvdev->dev, "%s#%s", dev_name(rvdev->dev.parent), name);
        dev_set_drvdata(&rvdev->dev, rvdev);
                put_device(&rvdev->dev);
                return ret;
        }
+
+       ret = copy_dma_range_map(&rvdev->dev, rproc->dev.parent);
+       if (ret)
+               goto free_rvdev;
+
        /* Make device dma capable by inheriting from parent's capabilities */
        set_dma_ops(&rvdev->dev, get_dma_ops(rproc->dev.parent));