Skip to content

Commit

Permalink
io_uring/uring_cmd: ensure that device supports IOPOLL
Browse files Browse the repository at this point in the history
It's possible for a file type to support uring commands, but not
pollable ones. Hence before issuing one of those, we should check
that it is supported and error out upfront if it isn't.

Cc: stable@vger.kernel.org
Fixes: 5756a3a ("io_uring: add iopoll infrastructure for io_uring_cmd")
Link: https://github.com/axboe/liburing/issues/816
Reviewed-by: Kanchan Joshi <joshi.k@samsung.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
  • Loading branch information
Jens Axboe committed Mar 9, 2023
1 parent 01e68ce commit 03b3d6b
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion io_uring/uring_cmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ int io_uring_cmd(struct io_kiocb *req, unsigned int issue_flags)
struct file *file = req->file;
int ret;

if (!req->file->f_op->uring_cmd)
if (!file->f_op->uring_cmd)
return -EOPNOTSUPP;

ret = security_uring_cmd(ioucmd);
Expand All @@ -120,6 +120,8 @@ int io_uring_cmd(struct io_kiocb *req, unsigned int issue_flags)
if (ctx->flags & IORING_SETUP_CQE32)
issue_flags |= IO_URING_F_CQE32;
if (ctx->flags & IORING_SETUP_IOPOLL) {
if (!file->f_op->uring_cmd_iopoll)
return -EOPNOTSUPP;
issue_flags |= IO_URING_F_IOPOLL;
req->iopoll_completed = 0;
WRITE_ONCE(ioucmd->cookie, NULL);
Expand Down

0 comments on commit 03b3d6b

Please sign in to comment.