Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp7042pxb; Mon, 31 Jan 2022 03:55:51 -0800 (PST) X-Google-Smtp-Source: ABdhPJxnQdU6bF4hIqy5Cw5uILUPRgUmtN6s7lz8FCaRK10RvJJLZOrZ0EL6j2h/x6QTss5DxDdt X-Received: by 2002:a05:6402:2804:: with SMTP id h4mr20217549ede.241.1643630151109; Mon, 31 Jan 2022 03:55:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643630151; cv=none; d=google.com; s=arc-20160816; b=NJXejI8rQwRJf1qbmRdSIjqKy2k78b4WgMCQ/ei5qml/hoX71znvF1fr/U9fBEX9Sp ymLMwSQfBcpk9jFELf2KYT563mEUMpJKTlNEcSrfWT3r1C32TMIni5xg75s3rQyn7WtF bf+U3/nWk8mD4wOnqT62UajwUoE4FGU5vXWYZrs0l2AHM6pKBjj4UY3tJSrKHI9gKdyU LlebYQWcoF43TX6Agchq4xCCA6gn/nIc/yQ1oW1Y1tUih3Pw52XOuuJ23byIV4QA6wzo TdJla5Uy4NezULosQ4hJcX/vwDa6sN4lrQVIoYLMMvMA1GD81OSZOHiFlicqNRG7F/wQ /zUg== 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:dkim-filter; bh=J5hHj/dx23so3IxDHwT/MEE38qNMldGDsBDJbZWzMuI=; b=ALMQ2Gx6Smf4cxuIvMwEiUVoQAjdXPqfCKuzkYwu6IUxE6IxwgzT/sSScFBK8yxhI9 UqHagD+VAIMOpCQuHxEvZhdglwt7Nij8oGRtNrb5GWsU3BEQMaGlMlD1LkZE8xv8uAuq v4y86JIwgUBsFsIV9UcBLe6kTLk0jw83nlDUDzZ0BgcAddMAuqLMW0Az5STnXdv9qLfj YC3CETpa1cX59Wp1XT7gjXEqYpXU+2FoTcfKjEPpz9lMF5ukHjKcbWYTHyu71zCroI8L IOqZgsddE0WQoGrPS72jkrneUpw/2YtgUPWtkBqkqYOaUgJS4ZvG+XO2Kh6lfGE5oGVA usSg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.microsoft.com header.s=default header.b="DIzmeTE/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.microsoft.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n11si7220381edx.479.2022.01.31.03.55.24; Mon, 31 Jan 2022 03:55:51 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.microsoft.com header.s=default header.b="DIzmeTE/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.microsoft.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236373AbiA2Agh (ORCPT + 99 others); Fri, 28 Jan 2022 19:36:37 -0500 Received: from linux.microsoft.com ([13.77.154.182]:58332 "EHLO linux.microsoft.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233942AbiA2Agg (ORCPT ); Fri, 28 Jan 2022 19:36:36 -0500 Received: from mail-pg1-f182.google.com (mail-pg1-f182.google.com [209.85.215.182]) by linux.microsoft.com (Postfix) with ESMTPSA id E707620B8010; Fri, 28 Jan 2022 16:36:35 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com E707620B8010 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1643416595; bh=J5hHj/dx23so3IxDHwT/MEE38qNMldGDsBDJbZWzMuI=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=DIzmeTE//T4QPJlvda5dJgcz5067BjdRLHBzq7nBxOi7CJxO8WL8sd49RAEt4W77y 3b7szVzDoCkpWB+ZWHJYrh9T/AdU4DLX3duNVHqGJmkN95KyhlZ62mWNcjXP3pvNOf wTR6yffucvl8oFCM8fDprbtW5i94b0PPkspWHQkE= Received: by mail-pg1-f182.google.com with SMTP id t32so6670074pgm.7; Fri, 28 Jan 2022 16:36:35 -0800 (PST) X-Gm-Message-State: AOAM533zMndws+4tkMmmZkQB4j4sFE6F3k+gkq3G84LURFLQgcqxYhUk rgU6339e1RCtbHz41NFt7bDuM+NgwNCj2KcOI9M= X-Received: by 2002:a63:5146:: with SMTP id r6mr8357669pgl.455.1643416595340; Fri, 28 Jan 2022 16:36:35 -0800 (PST) MIME-Version: 1.0 References: <20211210172034.13614-1-mcroce@linux.microsoft.com> <177da568-8410-36d6-5f95-c5792ba47d62@fb.com> In-Reply-To: From: Matteo Croce Date: Sat, 29 Jan 2022 01:35:59 +0100 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH bpf-next] bpf: limit bpf_core_types_are_compat() recursion To: Alexei Starovoitov Cc: Yonghong Song , bpf , Alexei Starovoitov , 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 Fri, Jan 28, 2022 at 9:09 PM Alexei Starovoitov wrote: > > On Fri, Jan 28, 2022 at 10:51 AM Matteo Croce > wrote: > > > > On Fri, Jan 28, 2022 at 6:31 AM Alexei Starovoitov > > wrote: > > > > > > On Mon, Dec 20, 2021 at 10:34 PM Yonghong Song wrote: > > > > > > > > > > > > https://reviews.llvm.org/D116063 improved the error message as below > > > > to make it a little bit more evident what is the problem: > > > > > > > > $ clang -target bpf -O2 -g -c bug.c > > > > > > > > fatal error: error in backend: SubroutineType not supported for > > > > BTF_TYPE_ID_REMOTE reloc > > > > > > Hi Matteo, > > > > > > Are you still working on a test? > > > What's a timeline to repost the patch set? > > > > > > Thanks! > > > > Hi Alexei, > > > > The change itself is ready, I'm just stuck at writing a test which > > will effectively calls __bpf_core_types_are_compat() with some > > recursion. > > I guess that I have to generate a BTF_KIND_FUNC_PROTO type somehow, so > > __bpf_core_types_are_compat() is called again to check the prototipe > > arguments type. > > I tried with these two, with no luck: > > > > // 1 > > typedef int (*func_proto_typedef)(struct sk_buff *); > > bpf_core_type_exists(func_proto_typedef); > > > > // 2 > > void func_proto(int, unsigned int); > > bpf_core_type_id_kernel(func_proto); > > > > Which is a simple way to generate a BTF_KIND_FUNC_PROTO BTF field? > > What do you mean 'no luck'? > Have you tried what progs/test_core_reloc_type_id.c is doing? > typedef int (*func_proto_typedef)(long); > bpf_core_type_id_kernel(func_proto_typedef); > > Without macros: > typedef int (*func_proto_typedef)(long); > > int test() { > return __builtin_btf_type_id(*(typeof(func_proto_typedef) *)0, 1); > } > int test2() { > return __builtin_preserve_type_info(*(typeof(func_proto_typedef) *)0, 0); > } > > > compiles fine and generates relos. Yes, I tried that one. We reach bpf_core_apply_relo_insn() but not bpf_core_spec_match(), since cands->len is 0. [ 16.424821] bpf_core_apply_relo_insn:1202 cands->len: 0 That's a very simple raw_tracepoint/sys_enter program: -- per aspera ad upstream