From nobody Fri Dec 19 11:14:42 2025 Received: from mail-pf1-f176.google.com (mail-pf1-f176.google.com [209.85.210.176]) (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 4A3831662E7; Sat, 12 Apr 2025 17:06:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744477604; cv=none; b=OFt3QJBM3OlLBLNivC6rc/hGuYC0X7IKOaEzQGw+nYE2PTf8Se1BvY39YMjoiSnS9lN9NKh2nr7PEh39upWA+mTTYcZ63DNaV60vKUVGwnQRwQmlYQjEEiVFQ9bhCDTxo8fZi8AyDZ8NT/0+VcySZVyXIoeG6GomeUEG/ZBizdE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744477604; c=relaxed/simple; bh=61FhjjL9N/+hoid5VOAtkBwn/YqBoDRWyTxqGjbrBLc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HUtE6Nwxd2NJVLJdapL4eSLk+VEBKtRxGLaqZJ2YZuh4PRyVyzZ0vq63PTvEo8iTrP0JEcdszkowhFGgy+i97DxWI9zVhY6PN+9w0+LsSgcZu+3/9mwhGUJxPYHssxlwaICF+Qw2D+dJhRkO6p8C/T5E2G6zxT4XcheOXIgIX2c= 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=Y8D1Apsh; arc=none smtp.client-ip=209.85.210.176 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="Y8D1Apsh" Received: by mail-pf1-f176.google.com with SMTP id d2e1a72fcca58-736b98acaadso2757131b3a.1; Sat, 12 Apr 2025 10:06:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744477602; x=1745082402; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UPDI1Qzq0cFcLbuE2Nuoihvy2bO7cAOmSG5K/1gvWPU=; b=Y8D1ApshqZhMGhUeileh90SIu2WpWGhYX/kMtvbBgs5hEm+D0Yk0I1QSWF71Vg20ky xqBpkmF60BiYQaGQH+RHavTq3yVbbqGBKbM0Y+qFTuCb0/fEoLPGrfz0E2f8+dSbQsFo h1FySMymF+wwww8g/kTe9uxcMqlAbC6oXkv6sPyWpfOCus/UGiOjB7OdrMoGLW2OOsa0 kc7PfdxwwfyrOu8izdezZzaQcOkuiGwYw/rCKfWCr6HCEACi5vKdTlxrdJSD/qrfuF6Z RWRInfkgbJ/q0LehNP8N0i6EyYdL3q7iDzqXY6y8af/lYKJLcwJcThn5i2rZY5Fq9wuM PoiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744477602; x=1745082402; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UPDI1Qzq0cFcLbuE2Nuoihvy2bO7cAOmSG5K/1gvWPU=; b=Vmh6TDbYRqdBHY9nW2u4sq0XOMvVoMjfvRAHIBKAclUw4MdeoLlRWBgSNcSyy3Zbow N289LRVjKq2vkDtcm2JKViFFmz2O8X504qjRM3IgDKfEP1fftEygn9to7jxi+JhDY5Aw 0FOx2PjozVJmjag2ABwa8dNAPzDgWDDC7+1sJINS9c5H4XoD4uOvjnPP+b8T02HI1yxj /z5sittrFo3EE/UdYyWY7XDHT5dDGFzgQjbZENyMOI/FKf7OCY+bMLKCfvo6xSLxXBtF 6LFxUU/kLDCfGh+0SA9I5LFzZMb/esR4Bf3C/vdS41vr2jZ0Qt1hEwavLR5WlRxuh6g4 dknw== X-Forwarded-Encrypted: i=1; AJvYcCUN+K2vdo1R+dBxEYah3dNOEYrDP/gSfD713bi28GuHu5HkvcfWw4qHgS1zVx+92PEk++/ql39WBj+NYk4+6tPr@vger.kernel.org, AJvYcCW/QZ5F3dK1jBFY8RqDBP+vxpuxVs5GKPqZUZLkJyxt2aAJBUFvgYTKUXtDR6rC6qXN/XMTHSHbd5qjoeA=@vger.kernel.org X-Gm-Message-State: AOJu0Yw/5zooAehf8hzNR7OZ+afGSn7g7GvjHWGmAK6uu714ivztAiP6 ExFzqHxZAufCEGfeyAPOdykMgGvZSNZpGVk3T9Ennqs0tmkWActj X-Gm-Gg: ASbGnctn7Z3ranHzNZLwpUejq4rvUODDch6IbYASvlwpXQigyPG118cuvQPvN1/ZLfQ 7s57m0c9fs3bXffARhcsD/tltUXGjvf/al7+kjbf5vq+jnrI8qF9nWm6XVYmSk3ROD5PF62J43F EVQka5DHr8U0g6Vy7d1Vze14i3nVQ71PXd5R86fmWMrO8JaFgh92HUGYqS7n7O9IYo2fV0j8MoC 9EXbAzT2JJzK0Sg2jb5wAErG90TD3ChULI8Rv4qoWRxTJXBOz5tAwnfNyUFrwpm82rSETbFudBS 5HNB+2xfmzoSNnRahtpInX2j37HMDpx9NtvApwpebYDV X-Google-Smtp-Source: AGHT+IExFXxa3PECkLqo2+aIIqyB11RlHMSbRhk7QCI803PU1uvv+DxCSjai0hlOvsVZkpb79F21Cg== X-Received: by 2002:a05:6a00:22cd:b0:736:a8db:93bb with SMTP id d2e1a72fcca58-73bd119ea62mr9207103b3a.5.1744477602266; Sat, 12 Apr 2025 10:06:42 -0700 (PDT) Received: from ubuntu2404.. ([125.121.98.110]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73bd21c20f3sm3610710b3a.39.2025.04.12.10.06.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Apr 2025 10:06:41 -0700 (PDT) From: KaFai Wan X-Google-Original-From: KaFai Wan To: martin.lau@linux.dev, ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, 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, mykolal@fb.com, shuah@kernel.org, memxor@gmail.com Cc: bpf@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, kafai.wan@hotmail.com, leon.hwang@linux.dev Subject: [PATCH bpf-next 1/2] bpf: Allow access to const void pointer arguments in tracing programs Date: Sun, 13 Apr 2025 01:06:25 +0800 Message-ID: <20250412170626.3638516-2-kafai.wan@hotmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250412170626.3638516-1-kafai.wan@hotmail.com> References: <20250412170626.3638516-1-kafai.wan@hotmail.com> 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" Adding support to access arguments with const void pointer arguments in tracing programs. Currently we allow tracing programs to access void pointers. If we try to access argument which is pointer to const void like 2nd argument in kfree, verifier will fail to load the program with; 0: R1=3Dctx() R10=3Dfp0 ; asm volatile ("r2 =3D *(u64 *)(r1 + 8); "); 0: (79) r2 =3D *(u64 *)(r1 +8) func 'kfree' arg1 type UNKNOWN is not a struct Adding is_void_ptr to generic void pointer check. Cc: Leon Hwang Signed-off-by: KaFai Wan --- kernel/bpf/btf.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c index 16ba36f34dfa..e11d3afd0562 100644 --- a/kernel/bpf/btf.c +++ b/kernel/bpf/btf.c @@ -6383,6 +6383,14 @@ struct btf *bpf_prog_get_target_btf(const struct bpf= _prog *prog) return prog->aux->attach_btf; } =20 +static bool is_void_ptr(struct btf *btf, const struct btf_type *t) +{ + /* skip modifiers */ + t =3D btf_type_skip_modifiers(btf, t->type, NULL); + + return t->type =3D=3D 0; +} + static bool is_int_ptr(struct btf *btf, const struct btf_type *t) { /* skip modifiers */ @@ -6776,7 +6784,7 @@ bool btf_ctx_access(int off, int size, enum bpf_acces= s_type type, } } =20 - if (t->type =3D=3D 0) + if (is_void_ptr(btf, t)) /* This is a pointer to void. * It is the same as scalar from the verifier safety pov. * No further pointer walking is allowed. --=20 2.43.0 From nobody Fri Dec 19 11:14:42 2025 Received: from mail-pf1-f176.google.com (mail-pf1-f176.google.com [209.85.210.176]) (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 A03301662E7; Sat, 12 Apr 2025 17:06:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744477610; cv=none; b=k4JBP+iqWED0L9dTaK6NCvNwcJI9IqXVB6oYZmVxfD+4SkMQDYqC9Yyq4b1d5xzLwF/8S+BV8ec8pWv2dDnjDT8leAR/xKVjCy1lLt3fhUw5JvFhQaWFg+X+dvS6ouKOZJTc5PQkfoPMk36kq+NgcPwGMjYTBHDYJtVWfrXUkyU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744477610; c=relaxed/simple; bh=xFYhN6FwRAsyWFqlpeGlTcvXCPwLaEf5hlQEci9C0+k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JRPxORjKnDFSSu/zIbp0821T6MwWHophCrhi30ryGGEI3M94qOByAF1P7+qIQ682Wlf6kr++8dUjszIMvgQyWaFvci0NQy/J9ooEwbRBWzYifqwV5/x+eiswn3L5luQixy9fPgGEagg7VrRVOfFJuuwAGZh2kliXNH5zO0GvI4U= 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=D7bXo9Un; arc=none smtp.client-ip=209.85.210.176 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="D7bXo9Un" Received: by mail-pf1-f176.google.com with SMTP id d2e1a72fcca58-7369ce5d323so2490060b3a.1; Sat, 12 Apr 2025 10:06:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744477608; x=1745082408; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hWvWft/Ilf3Ni77MiBJ218Cck/EYMRSjxeQtmM2Wmk8=; b=D7bXo9UnXh9O3jOVfE4wlWRhkoiCUga7MXJCA6nyR9AN5RA5x9uUb9bgGnNSUEkBwN /bK6fr4B6bQArjdqpLzNGOgSgV2DFilvNZ51sqMJXzzorBAXpNiN2zHGe/2o1sHlBUvR wk49SFt9VlrJZQ5NLfM9M6DZNVj2+OXpar/ORYXgUfk9V4on66PxmVJq6w21TpyrUgSj kL8HkeskFECOrSnchooqt4dBPIgh190gX8XFHzgnl/Sj81GspiDq4Ts6Cj6xoZRnvkQz WbbhLUzn1W8rDvwS0TGZtGWCg9smxYwPhsWARRDtMa37tmJA3DawnQ2o7zvQDGYXiNus 4rGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744477608; x=1745082408; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hWvWft/Ilf3Ni77MiBJ218Cck/EYMRSjxeQtmM2Wmk8=; b=Sjo213MRdZoy05jigNCHxJKcc9Z0iZ1ESXe+5Dyq43kmI+H7dLoYCBNAeiY6orh9K9 +O0Ruc1uTWwkEz5Mj8Qpl/Rji4Ju7d8h0swouo/fZ/wHrveRFHtLcIs8Ne3Lf+MT0U0u 2rZ14L9AaEiYLUBDOPCZ7rrOYeVf6/LRxa6qMzVYUzVyri69Wz91j2mxNuunALcpqmfL p7NOsp1VothFc8trowi3G+Y8VMp0A2eUjxAq36yG1KOhjjx1lw7m2/83LOrl5j0OuTbD JF4alXDyedz5VIuk+n13j1TXhrNbTTcXObs7hsa8I6Sd4zGRb4ZTaXygq/Liqsug6552 VSSA== X-Forwarded-Encrypted: i=1; AJvYcCW4cF4un2UQQTKzLqlvXeTVanjY7MLSuiV+2lf11lrZ/2yLlUxsz9ustbTTXjRrDrCEVV/bc+NOmS8Dm1aXmLAQ@vger.kernel.org, AJvYcCWj36nswBjzg12RLh7/de+sokovwDBPkxTZpm2CoubRcevYrEg5TkM5zqyvcsY5WdDHuGVHjrUazOIlWN8=@vger.kernel.org X-Gm-Message-State: AOJu0YzT9qyu49wpw1HSPT9JDQBfLb77vMUcOVuRD+EgzXrOa/qrYrec pcXpKkqQ19I0wzYcB0DVc1VoXxc4r4J+3pTmXqoOLHUfsq8J1tJp X-Gm-Gg: ASbGncsOa1AxOLPyEZszznoVyNzulRmnLpJ0z7XiXPMFx4PhDLbMo5mHtcUL76sr6BT ATjOICC41Rui1nDzGQiH7oK0QrRj3Ie3SJxvPkaOaVVOQv5EUagCT5atUuGsaMM5olh+h0KKslm bxDEA17p7XfiJ9/97REjddsw5ZZBbOo+6VEK99Snj2DaxkAePVeokWOOv0RNIvmKA0Vyyk3kBEC GTZUd9ga9+0IHL90TjMzdJFWQ+FJ04SW/LRCzEPEyHd+iOP9Fst0z+pJbyWQvqNcDtm+QBvfUXK qL0/IWJTJftZXOEwWSCZmi3W349MaCQjjEAlMis91FyF X-Google-Smtp-Source: AGHT+IFF9kQVXw4HN+npCAkPkNtd1zKYV9lEhCojLLriVZO+7NCdzgR6hv2pjLwmrj5MuNCYLsPKyw== X-Received: by 2002:a05:6a00:1387:b0:730:75b1:7219 with SMTP id d2e1a72fcca58-73bd1202f32mr8107832b3a.12.1744477607784; Sat, 12 Apr 2025 10:06:47 -0700 (PDT) Received: from ubuntu2404.. ([125.121.98.110]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73bd21c20f3sm3610710b3a.39.2025.04.12.10.06.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Apr 2025 10:06:47 -0700 (PDT) From: KaFai Wan X-Google-Original-From: KaFai Wan To: martin.lau@linux.dev, ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, 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, mykolal@fb.com, shuah@kernel.org, memxor@gmail.com Cc: bpf@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, kafai.wan@hotmail.com, leon.hwang@linux.dev Subject: [PATCH bpf-next 2/2] selftests/bpf: Add test to access const void pointer argument in tracing program Date: Sun, 13 Apr 2025 01:06:26 +0800 Message-ID: <20250412170626.3638516-3-kafai.wan@hotmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250412170626.3638516-1-kafai.wan@hotmail.com> References: <20250412170626.3638516-1-kafai.wan@hotmail.com> 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" Adding verifier test for accessing const void pointer argument in tracing programs. The test program loads 2nd argument of kfree tp_btf which is const void pointer and checks that verifier allows that. Signed-off-by: KaFai Wan --- .../selftests/bpf/progs/verifier_btf_ctx_access.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/testing/selftests/bpf/progs/verifier_btf_ctx_access.c b/= tools/testing/selftests/bpf/progs/verifier_btf_ctx_access.c index 28b939572cda..a6cec7f73dcd 100644 --- a/tools/testing/selftests/bpf/progs/verifier_btf_ctx_access.c +++ b/tools/testing/selftests/bpf/progs/verifier_btf_ctx_access.c @@ -65,4 +65,13 @@ __naked void ctx_access_u32_pointer_reject_8(void) " ::: __clobber_all); } =20 +SEC("tp_btf/kfree") +__description("btf_ctx_access const void pointer accept") +int ctx_access_const_void_pointer_accept(void) +{ + /* load 2nd argument value (const void pointer) */ + asm volatile ("r2 =3D *(u64 *)(r1 + 8); "); + return 0; +} + char _license[] SEC("license") =3D "GPL"; --=20 2.43.0