Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp3470670pxb; Fri, 4 Feb 2022 09:11:16 -0800 (PST) X-Google-Smtp-Source: ABdhPJwZj4/z8TM3dD9cFJ2RandDhASRfc6/GDeRrXKeM9uGughP8uK806XOEZ7zw1SaPgcatIAz X-Received: by 2002:a17:907:2ce4:: with SMTP id hz4mr3305869ejc.613.1643994676589; Fri, 04 Feb 2022 09:11:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643994676; cv=none; d=google.com; s=arc-20160816; b=IZsRmb6SrKPlI54s7t7n/oPqWbMek3uYMu4UchlJdkqGjVApJ9uwp2IOTuN+kSCFrQ Bwia5mxPlMUjJAy18nUwyTo5sEFCyJpijkZdA+zT4ri/Lfe/lx1YWBE9SgiVx66ZaYHm 6QjSpI1N3+49OtO1+rwtuKT1kII0HthMTtWnEwKF28WSrP44HqTMSYpcen1+/BGN8c+S E+5wzn16SUOP/vaPIy8aub3V6LcLzFqs4gvbAPiIw0lqrTNzM36uLlysJpuEeF2Fwtea qLuRMhiUwD+F6gkS0mqDtAlqQutXIKsKiUaLbnxJrZkJok2fcR8tySpKd0i4nPrUkCJo ECTg== 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=5I5a2aleiUaHSVG05eSin+O0+2GmadoXbT1CBpGVmVg=; b=gXML17nT0tyUL7NCPIoJJOxcjTMX/w7K9vWcMKfsJfNmVxrc+sw6RuNQVL83t+ZDWT HUmA5H09EoDv6uGa0g9nhaHZKMXjHDtb5ORmGl7g0wCeuPD7xEKYg2q33NTrf7gBQbR9 THsGEIIcA+tcnQlz1D0p2X72xFa3d+zSjqWNmbKFj8JCAsaGnq0uTC3dopLKEa4EU5Q6 +9qhqtmYdNk7bXVFPG1qzTc/tFtsE4gmE6lBPzXK7eDRrJt4o2FmQvSPYNq4sWNH1Lmw k0ZcpO/wM0DEQV3zxXf5b4V3Ujs6VS/6Z/ArNMzjVmduGOk5L2U/Pup5N5Tjbpr5L6FZ lExw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=YDwf9xGA; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id dm12si1620895ejc.517.2022.02.04.09.10.49; Fri, 04 Feb 2022 09:11:16 -0800 (PST) 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=@gmail.com header.s=20210112 header.b=YDwf9xGA; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1352919AbiBCRgv (ORCPT + 99 others); Thu, 3 Feb 2022 12:36:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45224 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233512AbiBCRgt (ORCPT ); Thu, 3 Feb 2022 12:36:49 -0500 Received: from mail-pl1-x62a.google.com (mail-pl1-x62a.google.com [IPv6:2607:f8b0:4864:20::62a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 82125C061714; Thu, 3 Feb 2022 09:36:49 -0800 (PST) Received: by mail-pl1-x62a.google.com with SMTP id s6so2718695plg.12; Thu, 03 Feb 2022 09:36:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=5I5a2aleiUaHSVG05eSin+O0+2GmadoXbT1CBpGVmVg=; b=YDwf9xGAGoiZuHSers3gN6OILdgsP9eLyNRCH8J26MT2gnOeZKqba+PbqExN6UOHs6 /jc5670/4mCF/Odu5BZjQpeFseTMLNsg7dtnSt47OrDxtGNWnuCfYn/bO5s9BbPzdXIz PFuDU+YNZIwf6ijsPZ3cHipUwkTm5SQ+EEZh00cIiscgkVKA/sejW/oZMfYUectIiZo9 FNPZOrFvtM/r2VhvsYl05rqbVr46nHdiiXW3YTP97j+TaOJ6NSeXjDj2pA2f7dqsEeH/ +QX1PqtRtAs+1gKXk2+FHXequc0mosXqGGMnsbjNEPdJGsRb0X5fXJY6Xl4OUNFXTXSX DMKg== 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=5I5a2aleiUaHSVG05eSin+O0+2GmadoXbT1CBpGVmVg=; b=20fxrEiHJ8tR7dMT+isiXnjFAS2gbOzVzWbyIRIxcEMe6ieziKomA0bi/LfaEVKkfr z8mmQyTzEVJWQmthAhf1XTv+PGRWQsCC8j5YO3TVyUXKMhK8VZs2IADHXFa0TuAQCuqq MncfE6H/QcLaAZ02OPnX0qlCNZYDAyX9xQUCNF+vzCDCNEIyQsqZtQD/z1p/wHuH6Qt0 e9Jfh9y6sBASspfhFSxo6Ub22PE05YB0dzbeyecJp1GyY2W42eDImcrUYQYgp3IUED+x uvxWE0sge2di8J58r8mMjrkqKqpZhFWGb196FjP+sCkjLqDfJ0XIzOAK7XOfc24PBaXg RXgA== X-Gm-Message-State: AOAM5302l6NOwmzI8uKTW7TTUN5Rft+QtO5IOPn+h7PaVhx/5YxTIkte Imnr7aDuJIYz7634krwmtsxXWmtAATsdmknOX+8= X-Received: by 2002:a17:90b:4ac6:: with SMTP id mh6mr15271610pjb.138.1643909808921; Thu, 03 Feb 2022 09:36:48 -0800 (PST) MIME-Version: 1.0 References: <20220202211328.176481-1-mcroce@linux.microsoft.com> <20220202211328.176481-3-mcroce@linux.microsoft.com> In-Reply-To: <20220202211328.176481-3-mcroce@linux.microsoft.com> From: Alexei Starovoitov Date: Thu, 3 Feb 2022 09:36:38 -0800 Message-ID: Subject: Re: [PATCH bpf-next v2 2/2] selftests/bpf: test maximum recursion depth for bpf_core_types_are_compat() To: Matteo Croce Cc: bpf , Daniel Borkmann , Andrii Nakryiko , LKML Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Feb 2, 2022 at 1:13 PM Matteo Croce wrote: > > From: Matteo Croce > > bpf_core_types_are_compat() was limited to 2 recursion levels, which are > enough to parse a function prototype. > Add a test which checks the existence of a function prototype, so to > test the bpf_core_types_are_compat() code path. > > Signed-off-by: Matteo Croce > --- > .../selftests/bpf/bpf_testmod/bpf_testmod.c | 3 +++ > tools/testing/selftests/bpf/progs/core_kern.c | 14 ++++++++++++++ > 2 files changed, 17 insertions(+) > > diff --git a/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c b/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c > index 595d32ab285a..a457071a7751 100644 > --- a/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c > +++ b/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c > @@ -13,6 +13,9 @@ > #define CREATE_TRACE_POINTS > #include "bpf_testmod-events.h" > > +typedef int (*func_proto_typedef)(long); > +func_proto_typedef funcp = NULL; > + > DEFINE_PER_CPU(int, bpf_testmod_ksym_percpu) = 123; > > noinline void > diff --git a/tools/testing/selftests/bpf/progs/core_kern.c b/tools/testing/selftests/bpf/progs/core_kern.c > index 13499cc15c7d..bfea86b42563 100644 > --- a/tools/testing/selftests/bpf/progs/core_kern.c > +++ b/tools/testing/selftests/bpf/progs/core_kern.c > @@ -101,4 +101,18 @@ int balancer_ingress(struct __sk_buff *ctx) > return 0; > } > > +typedef int (*func_proto_typedef___match)(long); > +typedef void (*func_proto_typedef___doesnt_match)(char*); > + > +int out[2]; > + > +SEC("raw_tracepoint/sys_enter") > +int core_relo_recur_limit(void *ctx) > +{ > + out[0] = bpf_core_type_exists(func_proto_typedef___match); > + out[1] = bpf_core_type_exists(func_proto_typedef___doesnt_match); How does it test it? The kernel code could be a nop and there will be no failure in this "test". Please make it real. Also add tests that exercise the limit of recursion. One that goes over and fails and another that is right at the limit and passes.