[PATCH for-next v4 2/4] io_uring: introduce fixed buffer support for io_uring_cmd
Jens Axboe
axboe at kernel.dk
Mon Sep 5 10:54:58 PDT 2022
On 9/5/22 7:48 AM, Kanchan Joshi wrote:
> @@ -76,8 +77,21 @@ int io_uring_cmd_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
> {
> struct io_uring_cmd *ioucmd = io_kiocb_to_cmd(req, struct io_uring_cmd);
>
> - if (sqe->rw_flags || sqe->__pad1)
> + if (sqe->__pad1)
> return -EINVAL;
> +
> + ioucmd->flags = READ_ONCE(sqe->uring_cmd_flags);
> + req->buf_index = READ_ONCE(sqe->buf_index);
> + if (ioucmd->flags & IORING_URING_CMD_FIXED) {
> + struct io_ring_ctx *ctx = req->ctx;
> + u16 index;
> +
> + if (unlikely(req->buf_index >= ctx->nr_user_bufs))
> + return -EFAULT;
> + index = array_index_nospec(req->buf_index, ctx->nr_user_bufs);
> + req->imu = ctx->user_bufs[index];
> + io_req_set_rsrc_node(req, ctx, 0);
> + }
Should that buf_index read and assignment be inside the
IORING_URING_CMD_FIXED section?
--
Jens Axboe
More information about the Linux-nvme
mailing list