From 3fc2e820456cef3bc283200b0b18a6bd0cb56b86 Mon Sep 17 00:00:00 2001 From: Roman Gushchin Date: Tue, 7 May 2019 10:01:48 -0700 Subject: [PATCH 1140/2944] io_uring: initialize percpu refcounters using PERCU_REF_ALLOW_REINIT to #26323588 commit 214828962dead0c698f92b60ef97ce3c5fc2c8fe upstream. Percpu reference counters should now be initialized with the PERCPU_REF_ALLOW_REINIT in order to allow switching them to the percpu mode from the atomic mode. This is exactly what percpu_ref_reinit() called from __io_uring_register() is supposed to do. So let's initialize percpu refcounters with the PERCU_REF_ALLOW_REINIT flag. Signed-off-by: Roman Gushchin Acked-by: Tejun Heo Signed-off-by: Dennis Zhou Signed-off-by: Joseph Qi Acked-by: Xiaoguang Wang --- fs/io_uring.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/io_uring.c b/fs/io_uring.c index c7af851..b0b3930 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -553,7 +553,8 @@ static struct io_ring_ctx *io_ring_ctx_alloc(struct io_uring_params *p) goto err; __hash_init(ctx->cancel_hash, 1U << hash_bits); - if (percpu_ref_init(&ctx->refs, io_ring_ctx_ref_free, 0, GFP_KERNEL)) + if (percpu_ref_init(&ctx->refs, io_ring_ctx_ref_free, + PERCPU_REF_ALLOW_REINIT, GFP_KERNEL)) goto err; ctx->flags = p->flags; -- 1.8.3.1