From nobody Thu Apr 2 01:09:00 2026 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8DF7026AE5 for ; Tue, 31 Mar 2026 02:31:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774924268; cv=none; b=laVCPcs+mWwElpMVB3R17/+A9EuYcNJloAIEDHEtc3gr/wy/+5Qg6l9RHa57LhEOYrgBWwUbTmW7B3qiZKqkX5EJ95qeVzWAn64JowiXUlXtJvpj5B4oKQJky4R+iejzO0bmvwZgXAIt+bpUM+IYx/IVT8ApkgMRkmZd9Evazso= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774924268; c=relaxed/simple; bh=9vgFi29Uwt4Hy0DWSECpUMOCEYUvXdZzyKcBaRSSQ/k=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=V+jff5SQNOxPWDLiOhc7ni47vA6Xe44NBJaTIhk+S2gNAOzFJJACynmu3R5YJ9ZKfqykMurVXHdvqAL20B3bpdi8VkM2SGzlSzmoo+CkHvY9werV3ze1XzP4MTaT/7DcwXz2go3D6nsdlS7/bCS12wxmedr5r5VnBP86tRZvoKI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=dy0rAMmj; arc=none smtp.client-ip=209.85.214.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dy0rAMmj" Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-2ab46931cf1so44772875ad.0 for ; Mon, 30 Mar 2026 19:31:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774924267; x=1775529067; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=KBNqkyAejqe++2mYyBULeebF1rQKQ6X3ZEEpltMbIqk=; b=dy0rAMmjiZ8GEY38GeXWKrkxQU1Az+4bUymoVXdhHk6qWRQPLfHcJoz1v7+ubqK/E6 zX6P4+R9+ena/ObxKPKZ7etnHBQsrKjiquaVj5SxlhNJXq1r+pKUpiq+RKIxfp+9OXVK jwD7NzlhcpD7CrvJpgSW9YfgQTtPNXUezDXkeMM9ox8foX4Whmw2zCcR+RaSRL6uPdRW DNIulMv8VOJ1wSbIxEatphDjnYf7Ap7FiV6Px5yjFOqjaYbBXGj6LwqI6xkBskjolswf w8BonsUP/yRoGzKQ7n3Jz6+YG+HO2zN8YuVJQNYMYicNrN36HcyVGkpVai3ND8uET7H4 ipTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774924267; x=1775529067; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=KBNqkyAejqe++2mYyBULeebF1rQKQ6X3ZEEpltMbIqk=; b=dlaCJMEYJbEvcsDrz+Jdwbi8KOFIy9a0wptZf6vmTMixU9DcFzxg5sgAuk3OreJJru qpxiSEb5esuGkABSwJOeh9Cc+qEiZLT9ydTe5xoCmSWboxVEvztC4C+/UjUhLdiRbTbP W/k/CXJqVvRUN/yCMPsbrap5KP8CpEGEyWQK/6u+hzS/ysrBrAuXt6OwIVQLZGGsulY4 /KUI1n0wS06Y8mQ+AxwVGtPDEJz+SAHrGC0oiJ+rR+lGh1pV/HA7OnJcZveJ+DfkYy87 M48PvK6/S1GvHx2foJOhXWfjUKF7yj1ECEDUvTflnizbh5vPBclzINOeDN7djPShmWnW uN1A== X-Forwarded-Encrypted: i=1; AJvYcCWNoDr2yO7CSJs7Sgmstt/ZN6GBRP9+N1Qes9a1ihZ5pe7kvli99Rx/HvTAyhw02voIkE4Bij4YwzHpGD4=@vger.kernel.org X-Gm-Message-State: AOJu0YyDHf92z1CWsjDp9k7yC/0YFHtwHOPtM15UOuHuG7x9KDQxsiOr v7o1s80mRQ5UjmFLoo9UrLTNuHL7lXa2IEMqCcSyRp3gs/xIrstiHfXf X-Gm-Gg: ATEYQzwA9fEPoo25uWzOS26g7PKZQ6tuq5XatRVC71OUoauencOyedG8zR39sTyyt3A Lqtk2JNzPHxbFftZG57V+qxxjWD0e/KXa0rvhslAY6uVYl5VnsbqRsW0yT2Fxfis6kWZMuv09qP p57OMBhjTuMAasiN8lAe3xKkydcXxPKs5XHxXpduVbCwhUzLb7w6Mz+YXr4Y4oSYNPwmoLkaR98 Uo+Xjr+lzz9qGfJC68bye6DQc52CVG9pvjJhNTBoCNGk02i+9v/e1KZQyCcCeCKe2YUD5hgak5c gfYQldEMvyEz6fxmDxbr0Nd/VgmYDvAGJpsIL2Ox8gWkPmvTC9t2SxKs/Jeu+BFpYbfwTV7rJER PSvWXVuWNPxvw4wu4DXwlaYIZulyNtUJtf4A8JPGtRig4sy8f19E8XaFcrS7B89uD2R5WYNmXde +DfHaVDarOa4+KOa90kHQitjvURMKTrte4LcbwHAX68kJCezRgTrDJKYFBmDYu+A== X-Received: by 2002:a17:902:d512:b0:2b2:4a25:5308 with SMTP id d9443c01a7336-2b25eeaf1dfmr15497155ad.6.1774924266800; Mon, 30 Mar 2026 19:31:06 -0700 (PDT) Received: from cps-manycore-1.. ([143.248.136.81]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b242683064sm94714165ad.33.2026.03.30.19.31.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Mar 2026 19:31:06 -0700 (PDT) From: Sechang Lim To: bpf@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, martin.lau@linux.dev, eddyz87@gmail.com, song@kernel.org, yonghong.song@linux.dev, john.fastabend@gmail.com, kpsingh@kernel.org, sdf@fomichev.me, haoluo@google.com, jolsa@kernel.org, sun.jian.kdev@gmail.com, linux-kernel@vger.kernel.org, Sechang Lim Subject: [PATCH bpf v3] bpf: Fix RCU stall in bpf_fd_array_map_clear() Date: Tue, 31 Mar 2026 02:30:56 +0000 Message-ID: <20260331023056.484354-1-rhkrqnwk98@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add a missing cond_resched() in bpf_fd_array_map_clear() loop. For PROG_ARRAY maps with many entries this loop calls prog_array_map_poke_run() per entry which can be expensive, and without yielding this can cause RCU stalls under load: rcu: INFO: rcu_preempt detected stalls on CPUs/tasks: rcu: (detected by 0, t=3D6502 jiffies, g=3D729293, q=3D305 ncpus=3D1) rcu: All QSes seen, last rcu_preempt kthread activity 6502 (4295096514-42= 95090012), jiffies_till_next_fqs=3D1, root ->qsmask 0x0 rcu: rcu_preempt kthread starved for 6502 jiffies! g729293 f0x2 RCU_GP_WA= IT_FQS(5) ->state=3D0x0 ->cpu=3D0 rcu: Unless rcu_preempt kthread gets sufficient CPU time, OOM is now exp= ected behavior. rcu: RCU grace-period kthread stack dump: task:rcu_preempt state:R running task stack:0 pid:15 tgid= :15 ppid:2 task_flags:0x208040 flags:0x00004000 Call Trace: context_switch kernel/sched/core.c:5382 [inline] __schedule+0x697/0x1430 kernel/sched/core.c:6767 __schedule_loop kernel/sched/core.c:6845 [inline] schedule+0x10a/0x3e0 kernel/sched/core.c:6860 schedule_timeout+0x145/0x2c0 kernel/time/sleep_timeout.c:99 rcu_gp_fqs_loop+0x255/0x1350 kernel/rcu/tree.c:2046 rcu_gp_kthread+0x347/0x680 kernel/rcu/tree.c:2248 kthread+0x465/0x880 kernel/kthread.c:464 ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:153 ret_from_fork_asm+0x19/0x30 arch/x86/entry/entry_64.S:245 rcu: Stack dump where RCU GP kthread last ran: CPU: 0 UID: 0 PID: 30932 Comm: kworker/0:2 Not tainted 6.14.0-13195-g967e= 8def1100 #2 PREEMPT(undef) Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 199= 6), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 Workqueue: events prog_array_map_clear_deferred RIP: 0010:write_comp_data+0x38/0x90 kernel/kcov.c:246 Call Trace: prog_array_map_poke_run+0x77/0x380 kernel/bpf/arraymap.c:1096 __fd_array_map_delete_elem+0x197/0x310 kernel/bpf/arraymap.c:925 bpf_fd_array_map_clear kernel/bpf/arraymap.c:1000 [inline] prog_array_map_clear_deferred+0x119/0x1b0 kernel/bpf/arraymap.c:1141 process_one_work+0x898/0x19d0 kernel/workqueue.c:3238 process_scheduled_works kernel/workqueue.c:3319 [inline] worker_thread+0x770/0x10b0 kernel/workqueue.c:3400 kthread+0x465/0x880 kernel/kthread.c:464 ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:153 ret_from_fork_asm+0x19/0x30 arch/x86/entry/entry_64.S:245 Reviewed-by: Sun Jian Fixes: da765a2f5993 ("bpf: Add poke dependency tracking for prog array maps= ") Signed-off-by: Sechang Lim --- kernel/bpf/arraymap.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel/bpf/arraymap.c b/kernel/bpf/arraymap.c index 33de68c95..5e25e0353 100644 --- a/kernel/bpf/arraymap.c +++ b/kernel/bpf/arraymap.c @@ -1015,8 +1015,10 @@ static void bpf_fd_array_map_clear(struct bpf_map *m= ap, bool need_defer) struct bpf_array *array =3D container_of(map, struct bpf_array, map); int i; =20 - for (i =3D 0; i < array->map.max_entries; i++) + for (i =3D 0; i < array->map.max_entries; i++) { __fd_array_map_delete_elem(map, &i, need_defer); + cond_resched(); + } } =20 static void prog_array_map_seq_show_elem(struct bpf_map *map, void *key, --=20 2.43.0