Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp3094892imw; Mon, 18 Jul 2022 01:54:44 -0700 (PDT) X-Google-Smtp-Source: AGRyM1v+6vRgJssSGXxh5Ywx7ROamFld6x2lzX+9IiuMyWVhcDotfos5H+yp5vd5snvnTWU/lKay X-Received: by 2002:a17:907:60c7:b0:72b:5651:e1f8 with SMTP id hv7-20020a17090760c700b0072b5651e1f8mr24723643ejc.375.1658134483928; Mon, 18 Jul 2022 01:54:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1658134483; cv=none; d=google.com; s=arc-20160816; b=tuei8u3VSMAKJAD5airAGd14msNcgvdpZls2k6AZ6twKWxGs0jDKBLlX06iPbcJHdB mmw2pgm7g5kq9qBtAdl358vvgBrD/HXVVRZPh3ufa4R63/e525FuMnVtQ3Xge4I2i1Zq RB131OozLq4F15BQWsB0QoUnbOO5il7QQdQXqEGJg2xP+KFIj45VH2WNSVV1g6/qoayt EjwpiSZyqLUg5kimK/c7sGsn4s53ez0wxeyjRyvA2wcUy6wWEUER4BmGVH5UG7xH66s+ +uCV30IUfO2jCPUIped+11GvPCwLViCWLYRfAChK//fhpyERnGM2u5TV+BRACY+7KFpW EtZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=jGouTsNv1lisIVuwecS9yzguYrksQ4eFIjfFj4TU4q0=; b=MxXnLz/OqglCCapeUp67HAreg6tx/wLU9hP10RL1GyiGEl1M6MNtQ/PjwjAZCZYSkT So9vXyhcpXrAjUflpXNUTtySLJhAIwAKHVfDFsbjdTihvR2oNHC3mRaa7xYDxOeOlBFV UadQ7bEGMOLJ0fwglDkkApkivBy236UZzMUb0CBwPgXmvYc3eST3wfawfvYG8J7J7ccj 7RBcVRcyYX2DlSuert9QvId9eik9PFEovU+aopUhH9S325F/Uubo90NROCkYCcNx30Yw V4L1NjzVgkOImcJbR5P26VKMCBYGTkQMsOogVAkHIN9DzZFybm8so3AOyewVOG54gVAT 0blQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=UDBzWZwJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i6-20020a1709064fc600b0070397358bcbsi16643473ejw.33.2022.07.18.01.54.18; Mon, 18 Jul 2022 01:54:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=UDBzWZwJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234010AbiGRImk (ORCPT + 99 others); Mon, 18 Jul 2022 04:42:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48078 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233994AbiGRImf (ORCPT ); Mon, 18 Jul 2022 04:42:35 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 615CE19C06 for ; Mon, 18 Jul 2022 01:42:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1658133753; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=jGouTsNv1lisIVuwecS9yzguYrksQ4eFIjfFj4TU4q0=; b=UDBzWZwJrKF3bx7Ca9UMbW9jKh33qGiMAnhn42Grguss2Db8jznAeE02JbJxTK1/3R3kQT +rRUTUr4IXCJ39Zx4y4pwRt9r2BNWFbYHpkwG3fanU7/b7zE0UwonRVBaMI25aXaKsIWqE d0QH6opxEnHoFHB0w9TIB83o8XsS4s8= Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-452-wV0c1Xy3PD2rnrNr30j_oQ-1; Mon, 18 Jul 2022 04:42:26 -0400 X-MC-Unique: wV0c1Xy3PD2rnrNr30j_oQ-1 Received: by mail-pj1-f69.google.com with SMTP id v19-20020a17090abb9300b001ef7bbd5a28so9259036pjr.0 for ; Mon, 18 Jul 2022 01:42:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=jGouTsNv1lisIVuwecS9yzguYrksQ4eFIjfFj4TU4q0=; b=bg2b8Mkz5F8/L3EICWpJcn0IYVncBJabp1cyQ9swTZ++ZkDFEawOt3KjreKqS6gfsH LDUu2t8jfINKQhGDfZwNOyxVpc+3ZD5Rr/SFKqOh+kEWmMVJVMhNQwbX0w2fGo+3Ws5X fpi3zjz00vAwnsS+BLJgs5iBcRIr6Sy56qUzgoX0OIkGpEUhukR5bzUhedEUgPbjpZqD o86iB1JQeat0yNAF+1hx5hXXcUT7z1lX/etjOCfgV/zZ5nFHDbC7A/40Gr8aEgoeUlZz fP8yiP6zU3RHaYbL9NvsT3ZXKQb77Jptq5IZ8LQSRFNjaOKhJY3sVNsW9Qo3q7OYqVKB OgVg== X-Gm-Message-State: AJIora9dFOuKRFv17+pdC2ZkaXwiNoxrjqOB4xjCEZ8BCuemxgjR/kBj yrbK/QZVtGoZtjLUL8/liqMjragLeVAbeFB21F2Y1lN2he/ZbdI2I/vuXA127xL/jU/7C7RmESz T7NbC3Fd6s9LE1t43FHsOflPbb4RUu9qjABBx3TsK X-Received: by 2002:a17:90b:3c0c:b0:1ef:e647:ff48 with SMTP id pb12-20020a17090b3c0c00b001efe647ff48mr37022216pjb.173.1658133744857; Mon, 18 Jul 2022 01:42:24 -0700 (PDT) X-Received: by 2002:a17:90b:3c0c:b0:1ef:e647:ff48 with SMTP id pb12-20020a17090b3c0c00b001efe647ff48mr37022193pjb.173.1658133744537; Mon, 18 Jul 2022 01:42:24 -0700 (PDT) MIME-Version: 1.0 References: <20220712145850.599666-1-benjamin.tissoires@redhat.com> <20220712145850.599666-7-benjamin.tissoires@redhat.com> In-Reply-To: From: Benjamin Tissoires Date: Mon, 18 Jul 2022 10:42:13 +0200 Message-ID: Subject: Re: [PATCH bpf-next v6 06/23] selftests/bpf: Add tests for kfunc returning a memory pointer To: Yonghong Song Cc: Greg KH , Jiri Kosina , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Song Liu , John Fastabend , KP Singh , Shuah Khan , Dave Marchevsky , Joe Stringer , Jonathan Corbet , Tero Kristo , lkml , "open list:HID CORE LAYER" , Networking , bpf , "open list:KERNEL SELFTEST FRAMEWORK" , Linux Doc Mailing List Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_NONE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, Jul 16, 2022 at 6:34 AM Yonghong Song wrote: > > > > On 7/12/22 7:58 AM, Benjamin Tissoires wrote: > > We add 2 new kfuncs that are following the RET_PTR_TO_MEM > > capability from the previous commit. > > Then we test them in selftests: > > the first tests are testing valid case, and are not failing, > > and the later ones are actually preventing the program to be loaded > > because they are wrong. > > > > To work around that, we mark the failing ones as not autoloaded > > (with SEC("?tc")), and we manually enable them one by one, ensuring > > the verifier rejects them. > > > > To be able to use bpf_program__set_autoload() from libbpf, we need > > to use a plain skeleton, not a light-skeleton, and this is why we > > also change the Makefile to generate both for kfunc_call_test.c > > > > Signed-off-by: Benjamin Tissoires > > > > --- > > > > new in v6 > > --- > > include/linux/btf.h | 4 +- > > net/bpf/test_run.c | 22 +++++ > > tools/testing/selftests/bpf/Makefile | 5 +- > > .../selftests/bpf/prog_tests/kfunc_call.c | 48 ++++++++++ > > .../selftests/bpf/progs/kfunc_call_test.c | 89 +++++++++++++++++++ > > 5 files changed, 165 insertions(+), 3 deletions(-) > > > > diff --git a/include/linux/btf.h b/include/linux/btf.h > > index 31da4273c2ec..6f46ff2128ae 100644 > > --- a/include/linux/btf.h > > +++ b/include/linux/btf.h > > @@ -422,7 +422,9 @@ static inline int register_btf_id_dtor_kfuncs(const struct btf_id_dtor_kfunc *dt > > > > static inline bool btf_type_is_struct_ptr(struct btf *btf, const struct btf_type *t) > > { > > - /* t comes in already as a pointer */ > > + if (!btf_type_is_ptr(t)) > > + return false; > > Why we have a change here? Definitely a mistake while fixing/rebasing the series. Will bring this hunk in the previous patch in the next revision. Thanks for the review! Cheers, Benjamin > > > + > > t = btf_type_by_id(btf, t->type); > > > > /* allow const */ > > diff --git a/net/bpf/test_run.c b/net/bpf/test_run.c > > index 9da2a42811e8..0b4026ea4652 100644 > > --- a/net/bpf/test_run.c > > +++ b/net/bpf/test_run.c > > @@ -606,6 +606,24 @@ noinline void bpf_kfunc_call_memb1_release(struct prog_test_member1 *p) > > WARN_ON_ONCE(1); > > } > > > > +static int *__bpf_kfunc_call_test_get_mem(struct prog_test_ref_kfunc *p, const int size) > > +{ > > + if (size > 2 * sizeof(int)) > > + return NULL; > > + > > + return (int *)p; > > +} > > + > > +noinline int *bpf_kfunc_call_test_get_rdwr_mem(struct prog_test_ref_kfunc *p, const int rdwr_buf_size) > > +{ > > + return __bpf_kfunc_call_test_get_mem(p, rdwr_buf_size); > > +} > > + > > +noinline int *bpf_kfunc_call_test_get_rdonly_mem(struct prog_test_ref_kfunc *p, const int rdonly_buf_size) > > +{ > > + return __bpf_kfunc_call_test_get_mem(p, rdonly_buf_size); > > +} > > + > > noinline struct prog_test_ref_kfunc * > > bpf_kfunc_call_test_kptr_get(struct prog_test_ref_kfunc **pp, int a, int b) > > { > > @@ -704,6 +722,8 @@ BTF_ID(func, bpf_kfunc_call_memb_acquire) > > BTF_ID(func, bpf_kfunc_call_test_release) > > BTF_ID(func, bpf_kfunc_call_memb_release) > > BTF_ID(func, bpf_kfunc_call_memb1_release) > > +BTF_ID(func, bpf_kfunc_call_test_get_rdwr_mem) > > +BTF_ID(func, bpf_kfunc_call_test_get_rdonly_mem) > > BTF_ID(func, bpf_kfunc_call_test_kptr_get) > > BTF_ID(func, bpf_kfunc_call_test_pass_ctx) > > BTF_ID(func, bpf_kfunc_call_test_pass1) > > @@ -731,6 +751,8 @@ BTF_SET_END(test_sk_release_kfunc_ids) > > BTF_SET_START(test_sk_ret_null_kfunc_ids) > > BTF_ID(func, bpf_kfunc_call_test_acquire) > > BTF_ID(func, bpf_kfunc_call_memb_acquire) > > +BTF_ID(func, bpf_kfunc_call_test_get_rdwr_mem) > > +BTF_ID(func, bpf_kfunc_call_test_get_rdonly_mem) > > BTF_ID(func, bpf_kfunc_call_test_kptr_get) > > BTF_SET_END(test_sk_ret_null_kfunc_ids) > > > [...] >