On 9/29/26 16:45, Christophe JAILLET wrote:
...>> +    for_each_sgtable_dma_sg(sgt, sg, tmp) {
+        dma_addr_t dma_addr = sg_dma_address(sg);
+        unsigned long sg_len = sg_dma_len(sg);
+
+        if ((sg_len % NVME_CTRL_PAGE_SIZE) ||
+            (dma_addr % NVME_CTRL_PAGE_SIZE)) {
+            ret = -EINVAL;
+            goto err;
+        }
+        while (sg_len) {
+            map->dma_list[i++] = dma_addr;
+            dma_addr += NVME_CTRL_PAGE_SIZE;
+            sg_len -= NVME_CTRL_PAGE_SIZE;
+        }
+    }
+
+    ret = dma_buf_io_init_map(ctx, &map->base, sgt);
+    if (ret)
+        goto err;
+    map->nr_entries = nr_entries;
+    map->sgt = sgt;
+    return &map->base;
+err:
+    if (sgt)
+        dma_buf_unmap_attachment(attach, sgt, ctx->dir);
+    kfree(map);

kvfree()?

Sashiko also flagged this one. I'm going to apply the nits from
both emails, thanks.

--
Pavel Begunkov


Reply via email to