+++ /dev/null
-From 8c273186074a591cfdcd4370849676bc3eeb6ecb Mon Sep 17 00:00:00 2001
-From: Jens Axboe <axboe@kernel.dk>
-Date: Fri, 5 Nov 2021 17:15:46 -0600
-Subject: io_uring: add ring freeing helper
-
-From: Jens Axboe <axboe@kernel.dk>
-
-Commit 9c189eee73af1825ea9c895fafad469de5f82641 upstream.
-
-We do rings and sqes separately, move them into a helper that does both
-the freeing and clearing of the memory.
-
-Signed-off-by: Jens Axboe <axboe@kernel.dk>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- io_uring/io_uring.c | 17 +++++++++++------
- 1 file changed, 11 insertions(+), 6 deletions(-)
-
-diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c
-index ebcb0680f1cc..b211feb0d2b1 100644
---- a/io_uring/io_uring.c
-+++ b/io_uring/io_uring.c
-@@ -2525,6 +2525,14 @@ static void io_mem_free(void *ptr)
- free_compound_page(page);
- }
-
-+static void io_rings_free(struct io_ring_ctx *ctx)
-+{
-+ io_mem_free(ctx->rings);
-+ io_mem_free(ctx->sq_sqes);
-+ ctx->rings = NULL;
-+ ctx->sq_sqes = NULL;
-+}
-+
- static void *io_mem_alloc(size_t size)
- {
- gfp_t gfp = GFP_KERNEL_ACCOUNT | __GFP_ZERO | __GFP_NOWARN | __GFP_COMP;
-@@ -2684,8 +2692,7 @@ static __cold void io_ring_ctx_free(struct io_ring_ctx *ctx)
- mmdrop(ctx->mm_account);
- ctx->mm_account = NULL;
- }
-- io_mem_free(ctx->rings);
-- io_mem_free(ctx->sq_sqes);
-+ io_rings_free(ctx);
-
- percpu_ref_exit(&ctx->refs);
- free_uid(ctx->user);
-@@ -3452,15 +3459,13 @@ static __cold int io_allocate_scq_urings(struct io_ring_ctx *ctx,
- else
- size = array_size(sizeof(struct io_uring_sqe), p->sq_entries);
- if (size == SIZE_MAX) {
-- io_mem_free(ctx->rings);
-- ctx->rings = NULL;
-+ io_rings_free(ctx);
- return -EOVERFLOW;
- }
-
- ptr = io_mem_alloc(size);
- if (IS_ERR(ptr)) {
-- io_mem_free(ctx->rings);
-- ctx->rings = NULL;
-+ io_rings_free(ctx);
- return PTR_ERR(ptr);
- }
-
---
-2.47.2
-
+++ /dev/null
-From b001225fa4fe09610b35b428e46193ed2a28c95f Mon Sep 17 00:00:00 2001
-From: Jens Axboe <axboe@kernel.dk>
-Date: Fri, 5 Nov 2021 17:13:52 -0600
-Subject: io_uring: return error pointer from io_mem_alloc()
-
-From: Jens Axboe <axboe@kernel.dk>
-
-Commit e27cef86a0edd4ef7f8b4670f508a03b509cbbb2 upstream.
-
-In preparation for having more than one time of ring allocator, make the
-existing one return valid/error-pointer rather than just NULL.
-
-Signed-off-by: Jens Axboe <axboe@kernel.dk>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- io_uring/io_uring.c | 18 ++++++++++++------
- 1 file changed, 12 insertions(+), 6 deletions(-)
-
-diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c
-index 33597284e1cb..ebcb0680f1cc 100644
---- a/io_uring/io_uring.c
-+++ b/io_uring/io_uring.c
-@@ -2528,8 +2528,12 @@ static void io_mem_free(void *ptr)
- static void *io_mem_alloc(size_t size)
- {
- gfp_t gfp = GFP_KERNEL_ACCOUNT | __GFP_ZERO | __GFP_NOWARN | __GFP_COMP;
-+ void *ret;
-
-- return (void *) __get_free_pages(gfp, get_order(size));
-+ ret = (void *) __get_free_pages(gfp, get_order(size));
-+ if (ret)
-+ return ret;
-+ return ERR_PTR(-ENOMEM);
- }
-
- static unsigned long rings_size(struct io_ring_ctx *ctx, unsigned int sq_entries,
-@@ -3422,6 +3426,7 @@ static __cold int io_allocate_scq_urings(struct io_ring_ctx *ctx,
- {
- struct io_rings *rings;
- size_t size, sq_array_offset;
-+ void *ptr;
-
- /* make sure these are sane, as we already accounted them */
- ctx->sq_entries = p->sq_entries;
-@@ -3432,8 +3437,8 @@ static __cold int io_allocate_scq_urings(struct io_ring_ctx *ctx,
- return -EOVERFLOW;
-
- rings = io_mem_alloc(size);
-- if (!rings)
-- return -ENOMEM;
-+ if (IS_ERR(rings))
-+ return PTR_ERR(rings);
-
- ctx->rings = rings;
- ctx->sq_array = (u32 *)((char *)rings + sq_array_offset);
-@@ -3452,13 +3457,14 @@ static __cold int io_allocate_scq_urings(struct io_ring_ctx *ctx,
- return -EOVERFLOW;
- }
-
-- ctx->sq_sqes = io_mem_alloc(size);
-- if (!ctx->sq_sqes) {
-+ ptr = io_mem_alloc(size);
-+ if (IS_ERR(ptr)) {
- io_mem_free(ctx->rings);
- ctx->rings = NULL;
-- return -ENOMEM;
-+ return PTR_ERR(ptr);
- }
-
-+ ctx->sq_sqes = ptr;
- return 0;
- }
-
---
-2.47.2
-