All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <axboe@kernel.dk>
To: stable@vger.kernel.org
Subject: [PATCH 7.3.y 04/16] io_uring/register: enforce per-task restrictions in io_uring_register_blind()
Date: Wed,  4 Nov 2026 11:44:35 -0700	[thread overview]
Message-ID: <20261104184447.516768-5-axboe@kernel.dk> (raw)
In-Reply-To: <20261104184447.516768-1-axboe@kernel.dk>

From: Dominik Maier <dmnk@google.com>

Commit 4a93427e99a8524f3612f29ec8bc0da5f8435a51 upstream.

When io_uring_register(2) is invoked with fd == -1, it dispatches
directly to io_uring_register_blind() without checking
current->io_uring_restrict.

As a result, a task with per-task register restrictions installed via
IORING_REGISTER_RESTRICTIONS can still invoke blind registration opcodes
such as IORING_REGISTER_SEND_MSG_RING even when those opcodes are not in
the task's allowed register_op bitmap.

Check current->io_uring_restrict->register_op in
io_uring_register_blind() before dispatching blind registration opcodes.

Fixes: ed82f35b926b ("io_uring: allow registration of per-task restrictions")
Assisted-by: ARTIST LLM
Signed-off-by: Dominik Maier <dmnk@google.com>
Link: https://patch.msgid.link/20261022232121.2538616-1-dmnk@google.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
 io_uring/register.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/io_uring/register.c b/io_uring/register.c
index 2ce36623e25a..62f492e6472f 100644
--- a/io_uring/register.c
+++ b/io_uring/register.c
@@ -1058,6 +1058,13 @@ static int io_uring_register_send_msg_ring(void __user *arg, unsigned int nr_arg
 static int io_uring_register_blind(unsigned int opcode, void __user *arg,
 				   unsigned int nr_args)
 {
+	if (current->io_uring_restrict &&
+	    current->io_uring_restrict->reg_registered) {
+		opcode = array_index_nospec(opcode, IORING_REGISTER_LAST);
+		if (!test_bit(opcode, current->io_uring_restrict->register_op))
+			return -EACCES;
+	}
+
 	switch (opcode) {
 	case IORING_REGISTER_SEND_MSG_RING:
 		return io_uring_register_send_msg_ring(arg, nr_args);
-- 
2.56.0


  parent reply	other threads:[~2026-11-04 18:45 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-04 18:44 [PATCH 7.3.y 00/16] io_uring fixes for 7.3-stable Jens Axboe
2026-11-04 18:44 ` [PATCH 7.3.y 01/16] io_uring/kbuf: advance head when a pickup empties the buffer ring Jens Axboe
2026-11-04 18:44 ` [PATCH 7.3.y 02/16] io_uring/net: keep recvmsg buffer select length within MAX_RW_COUNT Jens Axboe
2026-11-04 18:44 ` [PATCH 7.3.y 03/16] io_uring/net: mask socket type with SOCK_TYPE_MASK in io_socket_bpf_populate() Jens Axboe
2026-11-04 18:44 ` Jens Axboe [this message]
2026-11-04 18:44 ` [PATCH 7.3.y 05/16] io_uring/net: don't retry a non-blocking connect() that fails with -EAGAIN Jens Axboe
2026-11-04 18:44 ` [PATCH 7.3.y 06/16] io_uring: keep the drain active when a deferred drain request is started Jens Axboe
2026-11-04 18:44 ` [PATCH 7.3.y 07/16] io_uring/io-wq: no new workers once the exit has begun Jens Axboe
2026-11-04 18:44 ` [PATCH 7.3.y 08/16] io_uring/rsrc: charge buffer arrays and nodes to memcg Jens Axboe
2026-11-04 18:44 ` [PATCH 7.3.y 09/16] io_uring: charge tctx nodes and personalities Jens Axboe
2026-11-04 18:44 ` [PATCH 7.3.y 10/16] io_uring: free XArray nodes left by a failed store Jens Axboe
2026-11-04 18:44 ` [PATCH 7.3.y 11/16] io_uring/bpf-ops: clear bpf_ctx while submitting SQEs Jens Axboe
2026-11-04 18:44 ` [PATCH 7.3.y 12/16] io_uring: free the task context after a grace period Jens Axboe
2026-11-04 18:44 ` [PATCH 7.3.y 13/16] io_uring/sqpoll: don't wait for the thread to exit Jens Axboe
2026-11-04 18:44 ` [PATCH 7.3.y 14/16] io_uring: defer foreign io-wq enqueues to task_work Jens Axboe
2026-11-04 18:44 ` [PATCH 7.3.y 15/16] io_uring/timeout: count cancelled timeouts in cq_timeouts Jens Axboe
2026-11-04 18:44 ` [PATCH 7.3.y 16/16] io_uring/net: fix multishot recv length limit accounting Jens Axboe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261104184447.516768-5-axboe@kernel.dk \
    --to=axboe@kernel.dk \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.