From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dy1-f180.google.com (mail-dy1-f180.google.com [74.125.82.180]) (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 D30213BA254 for ; Tue, 10 Mar 2026 18:52:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.180 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773168737; cv=none; b=HL2l0vb8Jd/jtLmMjobZfyOT+TFGAKIhdMBe2RsVLfNVg36lDDAq9i7BX0823/QEe24UdQsmS1qz9X4bN37EUyQpqKVkUkk3aZyf8JGpC0uZiZMHtSTR47dywtlfK3tf0ahIFH327aKqxLv8eff1xMuV5XIS1igSF41TCGJkCsc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773168737; c=relaxed/simple; bh=cb5vktLgb8+u8LhhDYTc4ioGL2nlsTLIl/ZZClDfKsM=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=ulq7/LH74r89HU9qvIiIL6+SDvQH/QXTjCGiD0wk+NVAW/Z3Zf6jH0JzqmBbVK4wZ5k+9q4awjhDcw80/KRJ6hRuuLbXCv8plfPseV5GvH8RL0/QtLbR7Az+sqMXd320V/HLG3jThu3DDEE1TJ4gcOx7tc/mRupvm7fF+WHg9eg= 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=DOY2KNWv; arc=none smtp.client-ip=74.125.82.180 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="DOY2KNWv" Received: by mail-dy1-f180.google.com with SMTP id 5a478bee46e88-2be27fa54feso11407516eec.0 for ; Tue, 10 Mar 2026 11:52:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773168734; x=1773773534; darn=vger.kernel.org; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date:message-id:reply-to; bh=cb5vktLgb8+u8LhhDYTc4ioGL2nlsTLIl/ZZClDfKsM=; b=DOY2KNWvcHQHytzw6Y4QAMtTweRRjfaQCmy3C3eTjzVShGj3EV5Qsv4UbzAgprPmM4 RCd6i4n0/ViHK/FDxltfb0VBT7+nxhbuk2cdcpWZGNlNaFBnSN9vXdVUl4lgJZ2Ay1sN MbFalp+d4M6b5eT4fA1tmP0CVqW/aGeK36l6ZROv4kfcaWS4jS9uy5YLnTnhJLBYwSGz 39tNFL4ZaKpOnWO2haSeW8m8vASnnvsqEbBDu6+XQKfg0lBTFztz6XgQVy0UKkbFSNnn wpFeQx3r2px1p5MI/o1fjyCQIgdawfpQUei20cYYQHHdHb6JMC7+70468GH0V1ILcLA7 +rcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773168734; x=1773773534; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=cb5vktLgb8+u8LhhDYTc4ioGL2nlsTLIl/ZZClDfKsM=; b=tq7nRE2ivAFvgd6AfZxrueGkLXSgM9jJZ1yX5Rm6Ozwz8hEIeMZy1PANbNKSxYihMv hS8uSXJn0HnfLcd7McRJTGkrGO8XGcTy7RmBMtawEfgOFs4MuK9a/841rtDMKIKp3d5j IsdEuMvKgzBby+QWxH3nQT2skQ4LbZJPmoIIMxDweKNAhywMeV+cyLlCRf/toiIUiCEO Jyvbb5se7+vx0ergZY59oFDVXGiLO8/0ECv7JvutfuhUfUtZ8guG/BtQMhBZRfS+VAyb o1RDKMS8cXAodfcn1KqxTnfHKGLiRHqFvnn++UTQrz0Y2au5RsGVjuJwXbfZGJPso9xy BMGA== X-Forwarded-Encrypted: i=1; AJvYcCVkVZ+oqcKIylD0eJ7bzbz7Kf1dcm7wIF7kVaHimpB21wA2TTQpM6DoL+Ub4/DmaeF7LEKhbKeQnn2PaTU=@vger.kernel.org X-Gm-Message-State: AOJu0YzmZLZh1woUJykXinGWm5oZJ0f8apnxpu9bUHl0NHw/wq3lMN+s 3Kk8W8EoF0hwX9p6Aq7Tk6vSoNydRhEe5BrK172CgCHZhfyVlDM3EHng X-Gm-Gg: ATEYQzxp1W6z2GwWXTb5QH8vJOH4T6D3OZMLp3sCpdhEhBBJWsJWuAKbXokf42k3PQm IBBo55QM3uqCcqFe4iIwRDyYORphf64tTSkFB+6aBH5wPZb3cgGch6FxUHWvAaSDhE9R9usXmZf 0sLJDuGjmk6rVmWiBqWgxyHdZMljDS1PHudiXWmymWJcNEfJlwrgifc9BDnCaFdZl5hjYeDMmE6 xNn12NL+WhVC7lipjw070w0ndKoMx/1bNrun4mwrjUvIjPuYv8bkjjwFREi+zA1HVoBSNnKtnEm WB4MHPZs69/DKTrqXFxlLs/R9qQGq8oRs7Sclb4Eh7vBnJI876aDe6HQBdfTok/uQQAeV+JDy74 3kiDptTv43H0X8VLGvLI1iYCtELEj+W1mEWMvE4x9wLxD3g/TL+ZfrYZRu9xnn0hheb8jRD4EYg AB0ZLuiq7KpO61SGOXJqMDNx7vf/t+95GBUMP5/1ohvl0oD+nGX9/C4xlWTYh3A61JH9dvZZptg G6saYHK X-Received: by 2002:a05:7300:a985:b0:2be:10a6:647e with SMTP id 5a478bee46e88-2be4e055786mr6302882eec.19.1773168733632; Tue, 10 Mar 2026 11:52:13 -0700 (PDT) Received: from ?IPv6:2a03:83e0:115c:1:9dd5:5c94:8add:da1f? ([2620:10d:c090:500::1:641b]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2be4f94823esm15789597eec.20.2026.03.10.11.52.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 11:52:13 -0700 (PDT) Message-ID: <979c7539ac475b3c428f609066e947844b6dd8b0.camel@gmail.com> Subject: Re: [PATCH bpf-next v4 1/2] bpf: Support new pointer param types via SCALAR_VALUE for trampolines From: Eduard Zingerman To: Slava Imameev Cc: andrii@kernel.org, ast@kernel.org, bpf@vger.kernel.org, daniel@iogearbox.net, davem@davemloft.net, edumazet@google.com, haoluo@google.com, horms@kernel.org, john.fastabend@gmail.com, jolsa@kernel.org, kpsingh@kernel.org, kuba@kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-open-source@crowdstrike.com, martin.lau@linux.dev, netdev@vger.kernel.org, pabeni@redhat.com, sdf@fomichev.me, shuah@kernel.org, song@kernel.org, yonghong.song@linux.dev Date: Tue, 10 Mar 2026 11:52:10 -0700 In-Reply-To: <20260310121659.25801-1-slava.imameev@crowdstrike.com> References: <20260310121659.25801-1-slava.imameev@crowdstrike.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.58.2 (3.58.2-1.fc43) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 On Tue, 2026-03-10 at 23:16 +1100, Slava Imameev wrote: [...] > I verified whether PTR->FUNC, PTR->DATASEC, PTR->VAR can be passed to > btf_ctx_access() in the current mainline. >=20 > I added helpers that inject PTR->FUNC, PTR->DATASEC, PTR->VAR as pre or > post calls to btf_check_meta(). In all cases, the BPF program load > failed with errors "arg0 type FUNC / DATASEC / VAR is not a struct", > which indicates that btf_check_meta() can indeed be called with > PTR->FUNC, PTR->DATASEC, PTR->VAR. >=20 > If the condition for pointer check is changed to > `if (!btf_type_is_struct_ptr(btf, t))`, these BPF programs will load > successfully with arguments set to scalar(). >=20 > Do we accept this change in behavior? Kernel validates BTF before loading, see kernel/bpf/btf.c:btf_resolve(). Validation is applied to kernel, module and program-level BTF. Does BTF containing PTR->DATASEC and PTR->VAR pass validation? If it does, validation should be updated to reject such cases. For PTR->FUNC, which one is legit PTR->FUNC or PTR->FUNC_PROTO? The legit one should be allowed and invalid should be rejected at validation phase. You can craft invalid BTF as in the following selftest: tools/testing/selftests/bpf/prog_tests/btf.c. [...]