Generalize files_update functionality to rsrc_update in order to leverage it for buffers updates. Signed-off-by: Bijan Mottahedeh <bijan.mottahedeh@xxxxxxxxxx> --- fs/io_uring.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/fs/io_uring.c b/fs/io_uring.c index 2f02e11..62e1b84 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -5994,7 +5994,7 @@ static int io_async_cancel(struct io_kiocb *req) } static int io_rsrc_update_prep(struct io_kiocb *req, - const struct io_uring_sqe *sqe) + const struct io_uring_sqe *sqe) { if (unlikely(req->ctx->flags & IORING_SETUP_SQPOLL)) return -EINVAL; @@ -6011,8 +6011,8 @@ static int io_rsrc_update_prep(struct io_kiocb *req, return 0; } -static int io_files_update(struct io_kiocb *req, bool force_nonblock, - struct io_comp_state *cs) +static int io_rsrc_update(struct io_kiocb *req, bool force_nonblock, + struct io_comp_state *cs) { struct io_ring_ctx *ctx = req->ctx; struct io_uring_rsrc_update up; @@ -6025,7 +6025,10 @@ static int io_files_update(struct io_kiocb *req, bool force_nonblock, up.data = req->rsrc_update.arg; mutex_lock(&ctx->uring_lock); - ret = __io_sqe_files_update(ctx, &up, req->rsrc_update.nr_args); + if (req->opcode == IORING_OP_FILES_UPDATE) + ret = __io_sqe_files_update(ctx, &up, req->rsrc_update.nr_args); + else + ret = -EINVAL; mutex_unlock(&ctx->uring_lock); if (ret < 0) @@ -6326,7 +6329,7 @@ static int io_issue_sqe(struct io_kiocb *req, bool force_nonblock, ret = io_close(req, force_nonblock, cs); break; case IORING_OP_FILES_UPDATE: - ret = io_files_update(req, force_nonblock, cs); + ret = io_rsrc_update(req, force_nonblock, cs); break; case IORING_OP_STATX: ret = io_statx(req, force_nonblock); -- 1.8.3.1