From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1E95A4ADDAB; Sat, 28 Feb 2026 17:34:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772300083; cv=none; b=ipDRx/aECis2q8Wk1ut8blqUtPS7khKrrK8EIB8hX37PnDzKNUy5EtB4wlO3NMmKWUnxEZBSNfPHkkGhrr7eNPAD5dQSJs1mtNRKQOw3k/oc1s7jWejAsHRFP6uyRMhyH/3KngAXWXqXWlFDVPnBqq93hdgK3cIiX9MoveStjh8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772300083; c=relaxed/simple; bh=gwtE0C/HA4WXWj1SxfDqkRuaPdlFJr5XvrMKodsPQpI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JvtI6o2Smf5BDVQfJk8TuAuYF0/l50gw4gIeeemK4zn+tesdoyL2giyEfqLA0XKRr9bdfTpUyV71RnN+Ke2nKtgqZyTYHemghCwbdAqCP7/pQT6RuE+SQTNTjBtFJsB3+jlYVB+isNjgEZk/UXMeTfxQ15MkhYN6j6YuRGKRDCE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mBPN/lWg; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="mBPN/lWg" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3047AC19424; Sat, 28 Feb 2026 17:34:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772300083; bh=gwtE0C/HA4WXWj1SxfDqkRuaPdlFJr5XvrMKodsPQpI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mBPN/lWgssMcz+JkLuxx/piEYD5OYz4bFj1J3Asu95i643PYt6QHUi8ZvpOfGZtW6 kMmIg4J0HOlw0cew1zDccUQs1sBQ1RCGiIerzSAzUlELEW4/H9+LD7Y+CrYPRIHwiQ mx27JWPhecK9exVV/c6mt0OeHdGgjf9vU8l8z18CUufMf7NCMo2FQV9aSjOzxec6zC RhsAdWtVOsB66o19qzimS453c0ev8HZ746y5VW/4fTgjdi0L07nBUnLYcLXmMwK0Tt nhz06QVdTNoWTCP41+prsdSwd55I9HkPNwjzXJEQoH4ZJFYYSJ8RMqPJ0JfCVxB0od OZnad38dhJgvw== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Sami Tolvanen , Yonghong Song , Viktor Malik , Alexei Starovoitov , Sasha Levin Subject: [PATCH 6.19 097/844] bpf: crypto: Use the correct destructor kfunc type Date: Sat, 28 Feb 2026 12:20:10 -0500 Message-ID: <20260228173244.1509663-98-sashal@kernel.org> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260228173244.1509663-1-sashal@kernel.org> References: <20260228173244.1509663-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit From: Sami Tolvanen [ Upstream commit b40a5d724f29fc2eed23ff353808a9aae616b48a ] With CONFIG_CFI enabled, the kernel strictly enforces that indirect function calls use a function pointer type that matches the target function. I ran into the following type mismatch when running BPF self-tests: CFI failure at bpf_obj_free_fields+0x190/0x238 (target: bpf_crypto_ctx_release+0x0/0x94; expected type: 0xa488ebfc) Internal error: Oops - CFI: 00000000f2008228 [#1] SMP ... As bpf_crypto_ctx_release() is also used in BPF programs and using a void pointer as the argument would make the verifier unhappy, add a simple stub function with the correct type and register it as the destructor kfunc instead. Signed-off-by: Sami Tolvanen Acked-by: Yonghong Song Tested-by: Viktor Malik Link: https://lore.kernel.org/r/20260110082548.113748-7-samitolvanen@google.com Signed-off-by: Alexei Starovoitov Signed-off-by: Sasha Levin --- kernel/bpf/crypto.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/kernel/bpf/crypto.c b/kernel/bpf/crypto.c index 83c4d9943084b..1d024fe7248ac 100644 --- a/kernel/bpf/crypto.c +++ b/kernel/bpf/crypto.c @@ -261,6 +261,12 @@ __bpf_kfunc void bpf_crypto_ctx_release(struct bpf_crypto_ctx *ctx) call_rcu(&ctx->rcu, crypto_free_cb); } +__bpf_kfunc void bpf_crypto_ctx_release_dtor(void *ctx) +{ + bpf_crypto_ctx_release(ctx); +} +CFI_NOSEAL(bpf_crypto_ctx_release_dtor); + static int bpf_crypto_crypt(const struct bpf_crypto_ctx *ctx, const struct bpf_dynptr_kern *src, const struct bpf_dynptr_kern *dst, @@ -368,7 +374,7 @@ static const struct btf_kfunc_id_set crypt_kfunc_set = { BTF_ID_LIST(bpf_crypto_dtor_ids) BTF_ID(struct, bpf_crypto_ctx) -BTF_ID(func, bpf_crypto_ctx_release) +BTF_ID(func, bpf_crypto_ctx_release_dtor) static int __init crypto_kfunc_init(void) { -- 2.51.0