diff mbox series

[SRU,Lunar,1/2] io_uring/fdinfo: get rid of ref tryget

Message ID 20240122182411.15417-2-bethany.jamison@canonical.com
State New
Headers show
Series CVE-2023-46862 | expand

Commit Message

Bethany Jamison Jan. 22, 2024, 6:24 p.m. UTC
From: Jens Axboe <axboe@kernel.dk>

The caller holds a reference to the ring itself, so by definition
the ring cannot go away. There's no need to play games with tryget
for the reference, as we don't need an extra reference at all.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
(cherry picked from commit 3aaf22b62a9270b90524cd257755b960461a7614)
CVE-2023-46862
Signed-off-by: Bethany Jamison <bethany.jamison@canonical.com>
---
 io_uring/fdinfo.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)
diff mbox series

Patch

diff --git a/io_uring/fdinfo.c b/io_uring/fdinfo.c
index 882bd56b01ed..d61cdb848c49 100644
--- a/io_uring/fdinfo.c
+++ b/io_uring/fdinfo.c
@@ -48,9 +48,13 @@  static __cold int io_uring_show_cred(struct seq_file *m, unsigned int id,
 	return 0;
 }
 
-static __cold void __io_uring_show_fdinfo(struct io_ring_ctx *ctx,
-					  struct seq_file *m)
+/*
+ * Caller holds a reference to the file already, we don't need to do
+ * anything else to get an extra reference.
+ */
+__cold void io_uring_show_fdinfo(struct seq_file *m, struct file *f)
 {
+	struct io_ring_ctx *ctx = f->private_data;
 	struct io_sq_data *sq = NULL;
 	struct io_overflow_cqe *ocqe;
 	struct io_rings *r = ctx->rings;
@@ -205,14 +209,4 @@  static __cold void __io_uring_show_fdinfo(struct io_ring_ctx *ctx,
 
 	spin_unlock(&ctx->completion_lock);
 }
-
-__cold void io_uring_show_fdinfo(struct seq_file *m, struct file *f)
-{
-	struct io_ring_ctx *ctx = f->private_data;
-
-	if (percpu_ref_tryget(&ctx->refs)) {
-		__io_uring_show_fdinfo(ctx, m);
-		percpu_ref_put(&ctx->refs);
-	}
-}
 #endif