| From 3d8f874bd620ce03f75a5512847586828ab86544 Mon Sep 17 00:00:00 2001 |
| From: Ming Lei <ming.lei@redhat.com> |
| Date: Fri, 10 May 2024 11:50:27 +0800 |
| Subject: io_uring: fail NOP if non-zero op flags is passed in |
| |
| From: Ming Lei <ming.lei@redhat.com> |
| |
| commit 3d8f874bd620ce03f75a5512847586828ab86544 upstream. |
| |
| The NOP op flags should have been checked from beginning like any other |
| opcode, otherwise NOP may not be extended with the op flags. |
| |
| Given both liburing and Rust io-uring crate always zeros SQE op flags, just |
| ignore users which play raw NOP uring interface without zeroing SQE, because |
| NOP is just for test purpose. Then we can save one NOP2 opcode. |
| |
| Suggested-by: Jens Axboe <axboe@kernel.dk> |
| Fixes: 2b188cc1bb85 ("Add io_uring IO interface") |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Ming Lei <ming.lei@redhat.com> |
| Link: https://lore.kernel.org/r/20240510035031.78874-2-ming.lei@redhat.com |
| Signed-off-by: Jens Axboe <axboe@kernel.dk> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| io_uring/nop.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/io_uring/nop.c |
| +++ b/io_uring/nop.c |
| @@ -12,6 +12,8 @@ |
| |
| int io_nop_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe) |
| { |
| + if (READ_ONCE(sqe->rw_flags)) |
| + return -EINVAL; |
| return 0; |
| } |
| |