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