From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A1D28E63F32 for ; Mon, 16 Feb 2026 06:57:05 +0000 (UTC) Received: from boromir.ozlabs.org (localhost [127.0.0.1]) by lists.ozlabs.org (Postfix) with ESMTP id 4fDtqg5bCKz2yhZ; Mon, 16 Feb 2026 17:57:03 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; arc=none smtp.remote-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1771225023; cv=none; b=BUj4fOsKkcq0tMPYq+ZJS5aKEgDd/yDYPBLYLCstrIDph8oHWsqoMZM/HqvJubP7/edANhDdF+sE+slBerJd7BHLYQscAo1bqZHB65ha5rIcNyPob00meMudlEVlLd85CEGCsHEHa5gs6sebwu3yC0JeJZjocvOIT0eVjoUPVNFWPoZGZNtCLiyX64ENOVWHIahpseCl5CQP2qJ3WNErUJI7Ac3qCABaLqLuT4veR417pn0j7V5bUh6xQZncjCJoEQ8bJReqYe+3l5TspjErmLXfV4vc9WXsec0saLB7dOLsQ/zB5eOMksDkBuxi0K0aAmDVIhtA4DJ8h6NfJuoHZA== ARC-Message-Signature: i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1771225023; c=relaxed/relaxed; bh=SqbmQjSg2GytVyMUktvIGlVpWb4XNAQ3Gr5VMEULpHk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZjdmgG+Yove5uaMHl8LgZD8DaX8ZK+qdJgJ8ETqNKyQbCFHVymbfvj0VsA7umby4jJpf5TsGBYIb5QaaRcsGEKVP1pGWYHqOXMVO7D/OTuulq6CAAfvuRCP7G0FHG3uq82dDhZfIRUrv49OxjgjsTM58NmIvO6Ek9ycu3qWY+QsH0v21qAuvSzHBYOWEVrlDOz/9UjRwloqyYQa8MjAxGycJOc6RxOOZEahgw8e4loCrvTilZy+McubmBvD14LbxUoIVV1Rre/yv2AMzGzTwAJOAap/5syk6oNWZKAjvd3XuRjkcE9paozcCED7uCNdXzUY2AsBlTNYbg/8x4WM/+w== ARC-Authentication-Results: i=1; lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; dkim=pass (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=R7Aj8pW8; dkim-atps=neutral; spf=pass (client-ip=148.163.156.1; helo=mx0a-001b2d01.pphosted.com; envelope-from=hbathini@linux.ibm.com; receiver=lists.ozlabs.org) smtp.mailfrom=linux.ibm.com Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=R7Aj8pW8; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=linux.ibm.com (client-ip=148.163.156.1; helo=mx0a-001b2d01.pphosted.com; envelope-from=hbathini@linux.ibm.com; receiver=lists.ozlabs.org) Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4fDtqf3cLnz2xlq for ; Mon, 16 Feb 2026 17:57:02 +1100 (AEDT) Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61FMkt6G3648134; Mon, 16 Feb 2026 06:56:49 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=SqbmQjSg2GytVyMUk tvIGlVpWb4XNAQ3Gr5VMEULpHk=; b=R7Aj8pW8xguZDReRxRJDT9jZ8Nz4K6Vx9 5knOXoA9NS94LA3K2/P8bri6BRS0t5DilpCq2XC3RVw/bztZZdmm7aI6q6QLFkpM C2lYNd7qO1QT24b4d/CZSE4yb4LHfRW5/KlXrQiKTxixbCgFNAHqAyx7W/bsPnXs ayIkJ42H6zLv5NMqJtApt8qRmo81Mpq3lwDCiteYxr7/WRX1EuGu+8oNCv3NKX3R JtKJ2U1q5Z6794wLdnxdB4Sl/hCP/DEamVNYoEG9GceQg6Edd7KihfSfXWrV0u/T yHblgU6VvtKu8B504GP0jJ7mgVILkmBNcNhXgEoe4obRs/CzMw7RA== Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4caj6uef43-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 16 Feb 2026 06:56:48 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 61G1q6rS003807; Mon, 16 Feb 2026 06:56:47 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4cb4cmvbsh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 16 Feb 2026 06:56:47 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 61G6uh6S50987474 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 16 Feb 2026 06:56:43 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A7DF320043; Mon, 16 Feb 2026 06:56:43 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 21F6E2004B; Mon, 16 Feb 2026 06:56:42 +0000 (GMT) Received: from li-bd3f974c-2712-11b2-a85c-df1cec4d728e.in.ibm.com (unknown [9.78.106.17]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 16 Feb 2026 06:56:41 +0000 (GMT) From: Hari Bathini To: linuxppc-dev Cc: bpf@vger.kernel.org, Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Saket Kumar Bhaskar , Abhishek Dubey , stable@vger.kernel.org Subject: [PATCH 1/5] powerpc64/bpf: do not increment tailcall count when prog is NULL Date: Mon, 16 Feb 2026 12:26:35 +0530 Message-ID: <20260216065639.1750181-2-hbathini@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260216065639.1750181-1-hbathini@linux.ibm.com> References: <20260216065639.1750181-1-hbathini@linux.ibm.com> X-Mailing-List: linuxppc-dev@lists.ozlabs.org List-Id: List-Help: List-Owner: List-Post: List-Archive: , List-Subscribe: , , List-Unsubscribe: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=E+/AZKdl c=1 sm=1 tr=0 ts=6992bfb0 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=JWpHT1DDrkih_aSkpakA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjE2MDA1NCBTYWx0ZWRfX/HSAjK9iOFCj VEvqWZ+pzy7LLOJ6e/xj6u/Hm6XjGqIYAjlBlxRYVwHwDq0JbUZDG6I/67njN9MfjwjWj/+9DRK +x8U1iIdAFMp2D7SYH3AF3C6euz6nb5jCZ0tyBcsMIpGnpcomGwV4vH10cBDqOKxsE6okpR0RZo jEJ2n/1HGWyiLNC6bMDIoHisEOPuY70Ik/dDBViDhZ1o1KqWMLtGy8Q9KH5Fodq1weaWs2qWkyh 4ZzlBvtKWbb8helSPd74csqLnX6NvoSLyPG1MjfazHRu25mrYl/1tm0KytUlWrDXA/ACkPdqaKG vFckRplusvctodewqudt5vDROT0FVlNu1xbl67DUrt9JJkfrDbOybnhBoF19ri/eAXdUdYbO+/J BXqzUWLx0EXhgK2FUbDS1J4vFvq24dIBapb17/fGsMQfro2YTlWzCuGezmHXc1uHugpJje2LBAi vLo+cLaZ+p1vhSjpbKA== X-Proofpoint-ORIG-GUID: YXV6NMA-AT6bLW9E9Vkh0Z9oPlEu0R59 X-Proofpoint-GUID: YXV6NMA-AT6bLW9E9Vkh0Z9oPlEu0R59 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-16_03,2026-02-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 priorityscore=1501 malwarescore=0 phishscore=0 bulkscore=0 suspectscore=0 spamscore=0 clxscore=1011 impostorscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602160054 Do not increment tailcall count, if tailcall did not succeed due to missing BPF program. Fixes: ce0761419fae ("powerpc/bpf: Implement support for tail calls") Cc: stable@vger.kernel.org Signed-off-by: Hari Bathini --- arch/powerpc/net/bpf_jit_comp64.c | 39 +++++++++++++++++-------------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/arch/powerpc/net/bpf_jit_comp64.c b/arch/powerpc/net/bpf_jit_comp64.c index b1a3945ccc9f..44ce8a8783f9 100644 --- a/arch/powerpc/net/bpf_jit_comp64.c +++ b/arch/powerpc/net/bpf_jit_comp64.c @@ -522,9 +522,30 @@ static int bpf_jit_emit_tail_call(u32 *image, struct codegen_context *ctx, u32 o /* * tail_call_info++; <- Actual value of tcc here + * Writeback this updated value only if tailcall succeeds. */ EMIT(PPC_RAW_ADDI(bpf_to_ppc(TMP_REG_1), bpf_to_ppc(TMP_REG_1), 1)); + /* prog = array->ptrs[index]; */ + EMIT(PPC_RAW_MULI(bpf_to_ppc(TMP_REG_2), b2p_index, 8)); + EMIT(PPC_RAW_ADD(bpf_to_ppc(TMP_REG_2), bpf_to_ppc(TMP_REG_2), b2p_bpf_array)); + EMIT(PPC_RAW_LD(bpf_to_ppc(TMP_REG_2), bpf_to_ppc(TMP_REG_2), + offsetof(struct bpf_array, ptrs))); + + /* + * if (prog == NULL) + * goto out; + */ + EMIT(PPC_RAW_CMPLDI(bpf_to_ppc(TMP_REG_2), 0)); + PPC_BCC_SHORT(COND_EQ, out); + + /* goto *(prog->bpf_func + prologue_size); */ + EMIT(PPC_RAW_LD(bpf_to_ppc(TMP_REG_2), bpf_to_ppc(TMP_REG_2), + offsetof(struct bpf_prog, bpf_func))); + EMIT(PPC_RAW_ADDI(bpf_to_ppc(TMP_REG_2), bpf_to_ppc(TMP_REG_2), + FUNCTION_DESCR_SIZE + bpf_tailcall_prologue_size)); + EMIT(PPC_RAW_MTCTR(bpf_to_ppc(TMP_REG_2))); + /* * Before writing updated tail_call_info, distinguish if current frame * is storing a reference to tail_call_info or actual tcc value in @@ -539,24 +560,6 @@ static int bpf_jit_emit_tail_call(u32 *image, struct codegen_context *ctx, u32 o /* Writeback updated value to tail_call_info */ EMIT(PPC_RAW_STD(bpf_to_ppc(TMP_REG_1), bpf_to_ppc(TMP_REG_2), 0)); - /* prog = array->ptrs[index]; */ - EMIT(PPC_RAW_MULI(bpf_to_ppc(TMP_REG_1), b2p_index, 8)); - EMIT(PPC_RAW_ADD(bpf_to_ppc(TMP_REG_1), bpf_to_ppc(TMP_REG_1), b2p_bpf_array)); - EMIT(PPC_RAW_LD(bpf_to_ppc(TMP_REG_1), bpf_to_ppc(TMP_REG_1), offsetof(struct bpf_array, ptrs))); - - /* - * if (prog == NULL) - * goto out; - */ - EMIT(PPC_RAW_CMPLDI(bpf_to_ppc(TMP_REG_1), 0)); - PPC_BCC_SHORT(COND_EQ, out); - - /* goto *(prog->bpf_func + prologue_size); */ - EMIT(PPC_RAW_LD(bpf_to_ppc(TMP_REG_1), bpf_to_ppc(TMP_REG_1), offsetof(struct bpf_prog, bpf_func))); - EMIT(PPC_RAW_ADDI(bpf_to_ppc(TMP_REG_1), bpf_to_ppc(TMP_REG_1), - FUNCTION_DESCR_SIZE + bpf_tailcall_prologue_size)); - EMIT(PPC_RAW_MTCTR(bpf_to_ppc(TMP_REG_1))); - /* tear down stack, restore NVRs, ... */ bpf_jit_emit_common_epilogue(image, ctx); -- 2.53.0