[PATCH v1] io_uring: Fix memory leak if file setup fails.

From: Noah Goldstein
Date: Thu Apr 28 2022 - 20:43:41 EST


If `get_unused_fd_flags` files fails (either in setting up `ctx` as
`tctx->last` or `get_unused_fd_flags`) `ctx` will never be freed.

Signed-off-by: Noah Goldstein <goldstein.w.n@xxxxxxxxx>
---
I very well may be missing something (or there may be a double
free if the failure is after `get_unused_fd_flags`) but looks
to me to be a memory leak.
fs/io_uring.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/io_uring.c b/fs/io_uring.c
index a3b76e63f9da..9685a7be48e3 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -11863,7 +11863,7 @@ static __cold int io_uring_create(unsigned entries, struct io_uring_params *p,
if (ret < 0) {
/* fput will clean it up */
fput(file);
- return ret;
+ goto err;
}

trace_io_uring_create(ret, ctx, p->sq_entries, p->cq_entries, p->flags);
--
2.25.1