From a9411a9856a0a1539ea2c8dc9c7eb1bd8fa2c409 Mon Sep 17 00:00:00 2001 From: Alex Zhuravlev Date: Tue, 26 Sep 2023 19:15:38 +0300 Subject: [PATCH] LU-17076 nrs: wait for RCU completion before we destroy the slab holding the objects scheduled for a release via RCU. BUG: unable to handle kernel paging request at 000000046474e5c6 Oops: 0000 [#1] SMP CPU: 0 PID: 9 Comm: ksoftirqd/0 4.18.0 #3 RIP: 0010:kmem_cache_free+0xe3/0x170 Call Trace: rcu_core+0x27a/0x770 __do_softirq+0xc2/0x44d run_ksoftirqd+0x35/0x50 smpboot_thread_fn+0xb8/0x160 kthread+0x14a/0x170 Fixes: 42bf5f78ba ("LU-8130 nrs: convert NRS ORR/TRR to rhashtable") Signed-off-by: Alex Zhuravlev Change-Id: Ia4b1cf6f190f17c3b85548fcb6876be72822cdd2 Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/52515 Reviewed-by: Neil Brown Reviewed-by: James Simmons Reviewed-by: Oleg Drokin Reviewed-by: Andreas Dilger Tested-by: Maloo Tested-by: jenkins --- lustre/ptlrpc/nrs_orr.c | 1 + 1 file changed, 1 insertion(+) diff --git a/lustre/ptlrpc/nrs_orr.c b/lustre/ptlrpc/nrs_orr.c index 6daedc1..1aae791 100644 --- a/lustre/ptlrpc/nrs_orr.c +++ b/lustre/ptlrpc/nrs_orr.c @@ -623,6 +623,7 @@ static void nrs_orr_stop(struct ptlrpc_nrs_policy *policy) rhashtable_free_and_destroy(&orrd->od_obj_hash, nrs_orr_hash_exit, NULL); } + synchronize_rcu(); kmem_cache_destroy(orrd->od_cache); OBD_FREE_PTR(orrd); -- 1.8.3.1