Message ID | 20250224213116.3509093-9-kbusch@meta.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | ublk zero copy support | expand |
On Mon, Feb 24, 2025 at 01:31:13PM -0800, Keith Busch wrote: > From: Xinyu Zhang <xizhang@purestorage.com> > > When using kernel registered bvec fixed buffers, the "address" is > actually the offset into the bvec rather than userspace address. > Therefore it can be 0. > We can skip checking whether the address is NULL before mapping > uring_cmd data. Bad userspace address will be handled properly later when > the user buffer is imported. > With this patch, we will be able to use the kernel registered bvec fixed > buffers in io_uring NVMe passthru with ublk zero-copy support in > https://lore.kernel.org/io-uring/20250218224229.837848-1-kbusch@meta.com/T/#u. > > Reviewed-by: Caleb Sander Mateos <csander@purestorage.com> > Reviewed-by: Jens Axboe <axboe@kernel.dk> > Reviewed-by: Keith Busch <kbusch@kernel.org> > Signed-off-by: Xinyu Zhang <xizhang@purestorage.com> Reviewed-by: Ming Lei <ming.lei@redhat.com> Thanks, Ming
diff --git a/drivers/nvme/host/ioctl.c b/drivers/nvme/host/ioctl.c index e0876bc9aacde..fe9fb80c6a144 100644 --- a/drivers/nvme/host/ioctl.c +++ b/drivers/nvme/host/ioctl.c @@ -513,7 +513,7 @@ static int nvme_uring_cmd_io(struct nvme_ctrl *ctrl, struct nvme_ns *ns, return PTR_ERR(req); req->timeout = d.timeout_ms ? msecs_to_jiffies(d.timeout_ms) : 0; - if (d.addr && d.data_len) { + if (d.data_len) { ret = nvme_map_user_request(req, d.addr, d.data_len, nvme_to_user_ptr(d.metadata), d.metadata_len, ioucmd, vec, issue_flags);