From nobody Sun Feb 8 13:27:36 2026 Received: from mail-qk1-f193.google.com (mail-qk1-f193.google.com [209.85.222.193]) (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 E9D03362159 for ; Fri, 19 Dec 2025 16:29:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.193 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766161790; cv=none; b=AaZs0WIr7imQ1cRjnyOoyXjZg1+MCP674oXyjtCvtc923H3VibSoziyYNQWL/d4LBhMHgvITUwVTTPR0SVvE2+Z2M4mxurQRm8RV5ygT+1h6jwb8AFWQSoThaSO5mg1QpjJXq4JbgVdDVfaaRgHp29Z4wq7jdkg4k/M/hwXLROY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766161790; c=relaxed/simple; bh=cB3UAVw4AnK+AP0ieow7TbChOsK4vAiQbdu+PfJgSDM=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=VTUZ2gZp5Gptc7uURcqkvxibnXGfxrTYxfTQg/b9yNtzOtPMyOJ+0F3bNQPJ5qTrcb5LVBSOWMxMqCck9WWgcRjfr0ekNgbrVySSuIFB7AV/rRO3O63ewWZBi+gRK3E6jRYqy9IG2VwTbcltedG0O9LyGdr9gLc8SqtlYIR0pJk= 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=iZ+A4xuz; arc=none smtp.client-ip=209.85.222.193 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="iZ+A4xuz" Received: by mail-qk1-f193.google.com with SMTP id af79cd13be357-8b9f73728e8so201739185a.0 for ; Fri, 19 Dec 2025 08:29:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766161786; x=1766766586; 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=Edwd8UY5a1jD2Jxp69UFc+WzgBkBRj9goxSodHca6Sw=; b=iZ+A4xuzQMsBpQ+K0IgFKj4PmfW5mGsIRHZ9pnJnyKpwrd4AyBUBzZVqeVdcVZfV7e O5eCf7Ebv6QkGZQCLwOp0ITMzdMPbVBwDrmX1AhRVtc3MXABozmxU/xbNzkUPmTaCYf3 QrJrufmW1TxOQ0pQczC6uSQbX3kxftznb9k0DOd/Jx82VVvfPrV1TRJ0ddM/C9JVkVx2 ozwAwM2tJBsUyl+LzY3cjb9AqmkVQ1zAubhDpMR5vISdffiF1v9bUmIaUKzEnWcyjqe2 3vBpuvxaKZ65NuhQ1E11tJ0K08N2iISa1+RV5kJRmXxM1Ega9sqcaSy+mDWT3pCc2bkH 02ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766161786; x=1766766586; 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=Edwd8UY5a1jD2Jxp69UFc+WzgBkBRj9goxSodHca6Sw=; b=b4O8ZzXyZMl5K5fs46acp9vutS79NLINFOM7Iudl8GVLiZq6yezNHzlMt2L88yJ1Vh V3nhRZ2NmosbOy/w2r/19e40cIucLtK7eLrDNHr0jnv0+xDi+LgwGy/JZUYs8CgDaFVq 6vRy7BMR3BjPE1bCv8AO80qdFV+FzVWtKtrlx6ophEEVqhFCKjWhAbahF7mugYu/Q0tX J9is07Fj/ywDTNVvU6GvuPOqvFIqofgJwXkkcjxLRZigQvZ3V5jmNNvWHAjBrQwA43QX YagWNy1s2MWKoKQQIwfEmdybsY5UtWYFLWke08/Vevk4C90eBEHHZ9UpzwB7J6ZoETWa XMvw== X-Forwarded-Encrypted: i=1; AJvYcCVELfbG70tpcLOE1KAM1OPFDTpxZ/sCw6cVIufcP0JhxJlgtRLbTyYTzPa/U36lrrrSP8Yg+YqwA7Tb7O8=@vger.kernel.org X-Gm-Message-State: AOJu0Yy41/BRf6qrYLiIVFl7PmA71i1q8hFlbI9C3EbfZBv25D8MUqW+ zskFtAvsuKUHUcuEEP/gCnbYhR5snYUCjgUDKwj58tG3EGlvLhv4QPalrW41qonrzpA= X-Gm-Gg: AY/fxX64ZWPWq4p9bVX+rAs+Flf/sHwXQnO4S3OOJnUUDnX/x+kI3FO/sGS1vqn4r3m TkEs9lHMyMcbQeBOw6VhXT/quJz1YoDKleQhq7OqGaPFo6RtT+lqMi/0BZ7mXaWZiRDdSoIBanV MkMWlr/WRi1O0Q6oF59o+cESaTQmc2+045TTsLupOzJc/+FnBem3UWGTgUMTwhlkbgj8bTLtQVt WDlpWt2us1RTivmrgHi2b1CxvHSCpmucd/alss3oviKBNUJlxSoZY4+PRdWrw099zVaRRT29tg5 sjbZEuLh8efwuoOVGAhiEahQuQfhzKXYIOdjFvvpWB+oa+1UMJW+iVrigUmuh4h/px48KAuxT0/ jl2/17dWN0IysqOBRrl/RDh9+rhsEufHrAFg/p1zwi6qlT0XVOgzuqyl+3Ds0DkexGrZY1T9Xsa JTPYvZQDRUPn499JjkXC8vww== X-Google-Smtp-Source: AGHT+IFq5oWI2daMug51YuI+nmWHxSg6/yFeviCCy4ETMjX2vXEJi5/nbTSyTXuKWJ73d/ANbQ0DVQ== X-Received: by 2002:a17:902:fc43:b0:29d:9b39:c05f with SMTP id d9443c01a7336-2a2f22026camr31186615ad.10.1766154600996; Fri, 19 Dec 2025 06:30:00 -0800 (PST) Received: from 7950hx ([43.129.244.20]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a2f3c6a769sm24607575ad.7.2025.12.19.06.29.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 19 Dec 2025 06:30:00 -0800 (PST) From: Menglong Dong X-Google-Original-From: Menglong Dong To: ast@kernel.org, schwab@linux-m68k.org Cc: 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, bjorn@kernel.org, pulehui@huawei.com, puranjay@kernel.org, pjw@kernel.org, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, bpf@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH bpf v2] riscv, bpf: fix incorrect usage of BPF_TRAMP_F_ORIG_STACK Date: Fri, 19 Dec 2025 22:29:48 +0800 Message-ID: <20251219142948.204312-1-dongml2@chinatelecom.cn> X-Mailer: git-send-email 2.52.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" The usage of BPF_TRAMP_F_ORIG_STACK in __arch_prepare_bpf_trampoline() is wrong, and it should be BPF_TRAMP_F_CALL_ORIG, which caused crash as Andreas reported: Insufficient stack space to handle exception! Task stack: [0xff20000000010000..0xff20000000014000] Overflow stack: [0xff600000ffdad070..0xff600000ffdae070] CPU: 1 UID: 0 PID: 1 Comm: systemd Not tainted 6.18.0-rc5+ #15 PREEMPT(vo= luntary) Hardware name: riscv-virtio qemu/qemu, BIOS 2025.10 10/01/2025 epc : copy_from_kernel_nofault+0xa/0x198 ra : bpf_probe_read_kernel+0x20/0x60 epc : ffffffff802b732a ra : ffffffff801e6070 sp : ff2000000000ffe0 gp : ffffffff82262ed0 tp : 0000000000000000 t0 : ffffffff80022320 t1 : ffffffff801e6056 t2 : 0000000000000000 s0 : ff20000000010040 s1 : 0000000000000008 a0 : ff20000000010050 a1 : ff60000083b3d320 a2 : 0000000000000008 a3 : 0000000000000097 a4 : 0000000000000000 a5 : 0000000000000000 a6 : 0000000000000021 a7 : 0000000000000003 s2 : ff20000000010050 s3 : ff6000008459fc18 s4 : ff60000083b3d340 s5 : ff20000000010060 s6 : 0000000000000000 s7 : ff20000000013aa8 s8 : 0000000000000000 s9 : 0000000000008000 s10: 000000000058dcb0 s11: 000000000058dca7 t3 : 000000006925116d t4 : ff6000008090f026 t5 : 00007fff9b0cbaa8 t6 : 0000000000000016 status: 0000000200000120 badaddr: 0000000000000000 cause: 8000000000000005 Kernel panic - not syncing: Kernel stack overflow CPU: 1 UID: 0 PID: 1 Comm: systemd Not tainted 6.18.0-rc5+ #15 PREEMPT(vo= luntary) Hardware name: riscv-virtio qemu/qemu, BIOS 2025.10 10/01/2025 Call Trace: [] dump_backtrace+0x28/0x38 [] show_stack+0x3a/0x50 [] dump_stack_lvl+0x56/0x80 [] dump_stack+0x18/0x22 [] vpanic+0xf6/0x328 [] panic+0x3e/0x40 [] handle_bad_stack+0x98/0xa0 [] bpf_probe_read_kernel+0x20/0x60 Just fix it. Fixes: 47c9214dcbea ("bpf: fix the usage of BPF_TRAMP_F_SKIP_FRAME") Reported-by: Andreas Schwab Closes: https://lore.kernel.org/bpf/874ipnkfvt.fsf@igel.home/ Signed-off-by: Menglong Dong Reviewed-by: Pu Lehui --- v2: - merge the code --- arch/riscv/net/bpf_jit_comp64.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/arch/riscv/net/bpf_jit_comp64.c b/arch/riscv/net/bpf_jit_comp6= 4.c index 5f9457e910e8..37888abee70c 100644 --- a/arch/riscv/net/bpf_jit_comp64.c +++ b/arch/riscv/net/bpf_jit_comp64.c @@ -1133,10 +1133,6 @@ static int __arch_prepare_bpf_trampoline(struct bpf_= tramp_image *im, =20 store_args(nr_arg_slots, args_off, ctx); =20 - /* skip to actual body of traced function */ - if (flags & BPF_TRAMP_F_ORIG_STACK) - orig_call +=3D RV_FENTRY_NINSNS * 4; - if (flags & BPF_TRAMP_F_CALL_ORIG) { emit_imm(RV_REG_A0, ctx->insns ? (const s64)im : RV_MAX_COUNT_IMM, ctx); ret =3D emit_call((const u64)__bpf_tramp_enter, true, ctx); @@ -1171,6 +1167,8 @@ static int __arch_prepare_bpf_trampoline(struct bpf_t= ramp_image *im, } =20 if (flags & BPF_TRAMP_F_CALL_ORIG) { + /* skip to actual body of traced function */ + orig_call +=3D RV_FENTRY_NINSNS * 4; restore_args(min_t(int, nr_arg_slots, RV_MAX_REG_ARGS), args_off, ctx); restore_stack_args(nr_arg_slots - RV_MAX_REG_ARGS, args_off, stk_arg_off= , ctx); ret =3D emit_call((const u64)orig_call, true, ctx); --=20 2.52.0