From: Jens Axboe <axboe@xxxxxxxxx> Replace the mapped buffer to the parent node. This is preparing for a future for different types with specific handling considerations. Signed-off-by: Jens Axboe <axboe@xxxxxxxxx> Signed-off-by: Keith Busch <kbusch@xxxxxxxxxx> --- io_uring/net.c | 3 +-- io_uring/rsrc.c | 6 +++--- io_uring/rsrc.h | 5 ++--- io_uring/rw.c | 2 +- io_uring/uring_cmd.c | 2 +- 5 files changed, 8 insertions(+), 10 deletions(-) diff --git a/io_uring/net.c b/io_uring/net.c index 85f55fbc25c94..4e9d0f04b902d 100644 --- a/io_uring/net.c +++ b/io_uring/net.c @@ -1359,8 +1359,7 @@ static int io_send_zc_import(struct io_kiocb *req, unsigned int issue_flags) return ret; ret = io_import_fixed(ITER_SOURCE, &kmsg->msg.msg_iter, - node->buf, (u64)(uintptr_t)sr->buf, - sr->len); + node, (u64)(uintptr_t)sr->buf, sr->len); if (unlikely(ret)) return ret; kmsg->msg.sg_from_iter = io_sg_from_iter; diff --git a/io_uring/rsrc.c b/io_uring/rsrc.c index af39b69eb4fde..4d0e1c06c8bc6 100644 --- a/io_uring/rsrc.c +++ b/io_uring/rsrc.c @@ -860,10 +860,10 @@ int io_sqe_buffers_register(struct io_ring_ctx *ctx, void __user *arg, return ret; } -int io_import_fixed(int ddir, struct iov_iter *iter, - struct io_mapped_ubuf *imu, - u64 buf_addr, size_t len) +int io_import_fixed(int ddir, struct iov_iter *iter, struct io_rsrc_node *node, + u64 buf_addr, size_t len) { + struct io_mapped_ubuf *imu = node->buf; u64 buf_end; size_t offset; diff --git a/io_uring/rsrc.h b/io_uring/rsrc.h index 190f7ee45de93..abd0d5d42c3e1 100644 --- a/io_uring/rsrc.h +++ b/io_uring/rsrc.h @@ -50,9 +50,8 @@ void io_free_rsrc_node(struct io_ring_ctx *ctx, struct io_rsrc_node *node); void io_rsrc_data_free(struct io_ring_ctx *ctx, struct io_rsrc_data *data); int io_rsrc_data_alloc(struct io_rsrc_data *data, unsigned nr); -int io_import_fixed(int ddir, struct iov_iter *iter, - struct io_mapped_ubuf *imu, - u64 buf_addr, size_t len); +int io_import_fixed(int ddir, struct iov_iter *iter, struct io_rsrc_node *node, + u64 buf_addr, size_t len); int io_register_clone_buffers(struct io_ring_ctx *ctx, void __user *arg); int io_sqe_buffers_unregister(struct io_ring_ctx *ctx); diff --git a/io_uring/rw.c b/io_uring/rw.c index a9a2733be8420..d6332d019dd56 100644 --- a/io_uring/rw.c +++ b/io_uring/rw.c @@ -393,7 +393,7 @@ static int io_prep_rw_fixed(struct io_kiocb *req, const struct io_uring_sqe *sqe io_req_assign_buf_node(req, node); io = req->async_data; - ret = io_import_fixed(ddir, &io->iter, node->buf, rw->addr, rw->len); + ret = io_import_fixed(ddir, &io->iter, node, rw->addr, rw->len); iov_iter_save_state(&io->iter, &io->iter_state); return ret; } diff --git a/io_uring/uring_cmd.c b/io_uring/uring_cmd.c index fc94c465a9850..b7b9baf30d728 100644 --- a/io_uring/uring_cmd.c +++ b/io_uring/uring_cmd.c @@ -281,7 +281,7 @@ int io_uring_cmd_import_fixed(u64 ubuf, unsigned long len, int rw, /* Must have had rsrc_node assigned at prep time */ if (node) - return io_import_fixed(rw, iter, node->buf, ubuf, len); + return io_import_fixed(rw, iter, node, ubuf, len); return -EFAULT; } -- 2.43.5