From patchwork Tue Aug 25 19:21:10 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Olsa X-Patchwork-Id: 261950 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING, SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3BE73C433DF for ; Tue, 25 Aug 2020 19:21:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 24A932071E for ; Tue, 25 Aug 2020 19:21:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1598383303; bh=uEn/eSwIOwGH0vC3zWuUp4EdRG1ivg9BrrMIH1twmAg=; h=From:To:Cc:Subject:Date:List-ID:From; b=WCIvzr3Tt9C/FOklNDei2czAwYpuMhoBWXbuNRhXROirE4sNFzWZMjaJ7WK/DybRT UoHYNVLGwLJMo1IzF7cfocYyfLG/iReqlOKaAH4aRe4Q53cnnN334anbeYcJRdDU8z x71Xu0K72oaCnyWwEKZsRVF4D4Zwqb7n5FnKhyCw= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726867AbgHYTVl convert rfc822-to-8bit (ORCPT ); Tue, 25 Aug 2020 15:21:41 -0400 Received: from us-smtp-2.mimecast.com ([205.139.110.61]:37391 "EHLO us-smtp-delivery-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726066AbgHYTVl (ORCPT ); Tue, 25 Aug 2020 15:21:41 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-24-x7u3CpNmO2yfhTvhXpyEoQ-1; Tue, 25 Aug 2020 15:21:34 -0400 X-MC-Unique: x7u3CpNmO2yfhTvhXpyEoQ-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id DE3F63FE7; Tue, 25 Aug 2020 19:21:32 +0000 (UTC) Received: from krava.redhat.com (unknown [10.40.192.4]) by smtp.corp.redhat.com (Postfix) with ESMTP id 96A6819C4F; Tue, 25 Aug 2020 19:21:25 +0000 (UTC) From: Jiri Olsa To: Alexei Starovoitov , Daniel Borkmann Cc: netdev@vger.kernel.org, bpf@vger.kernel.org, Martin KaFai Lau , Song Liu , Yonghong Song , Andrii Nakryiko , John Fastabend , KP Singh , Jesper Dangaard Brouer Subject: [PATCH v12 bpf-next 00/14] bpf: Add d_path helper Date: Tue, 25 Aug 2020 21:21:10 +0200 Message-Id: <20200825192124.710397-1-jolsa@kernel.org> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jolsa@kernel.org X-Mimecast-Spam-Score: 0.001 X-Mimecast-Originator: kernel.org Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org hi, adding d_path helper function that returns full path for given 'struct path' object, which needs to be the kernel BTF 'path' object. The path is returned in buffer provided 'buf' of size 'sz' and is zero terminated. long bpf_d_path(struct path *path, char *buf, u32 sz); The helper calls directly d_path function, so there's only limited set of function it can be called from. The patchset also adds support to add set of BTF IDs for a helper to define functions that the helper is allowed to be called from. Also available at: https://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git bpf/d_path v12 changes: - added acks - rebased on latest bpf-next - reposted without RFC tag thanks, jirka --- Jiri Olsa (14): tools resolve_btfids: Add size check to get_id function tools resolve_btfids: Add support for set symbols bpf: Move btf_resolve_size into __btf_resolve_size bpf: Add elem_id pointer as argument to __btf_resolve_size bpf: Add type_id pointer as argument to __btf_resolve_size bpf: Remove recursion call in btf_struct_access bpf: Factor btf_struct_access function bpf: Add btf_struct_ids_match function bpf: Add BTF_SET_START/END macros bpf: Add d_path helper bpf: Update .BTF_ids section in btf.rst with sets info selftests/bpf: Add verifier test for d_path helper selftests/bpf: Add test for d_path helper selftests/bpf: Add set test to resolve_btfids Documentation/bpf/btf.rst | 25 +++++++++++++++ include/linux/bpf.h | 6 ++++ include/linux/btf.h | 3 +- include/linux/btf_ids.h | 51 +++++++++++++++++++++++++++++- include/uapi/linux/bpf.h | 16 +++++++++- kernel/bpf/bpf_struct_ops.c | 6 ++-- kernel/bpf/btf.c | 163 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------- kernel/bpf/verifier.c | 22 +++++++++---- kernel/trace/bpf_trace.c | 48 ++++++++++++++++++++++++++++ scripts/bpf_helpers_doc.py | 2 ++ tools/bpf/resolve_btfids/main.c | 29 +++++++++++++++-- tools/include/linux/btf_ids.h | 51 +++++++++++++++++++++++++++++- tools/include/uapi/linux/bpf.h | 16 +++++++++- tools/testing/selftests/bpf/prog_tests/d_path.c | 147 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tools/testing/selftests/bpf/prog_tests/resolve_btfids.c | 39 ++++++++++++++++++++++- tools/testing/selftests/bpf/progs/test_d_path.c | 58 ++++++++++++++++++++++++++++++++++ tools/testing/selftests/bpf/test_verifier.c | 19 ++++++++++- tools/testing/selftests/bpf/verifier/d_path.c | 37 ++++++++++++++++++++++ 18 files changed, 694 insertions(+), 44 deletions(-) create mode 100644 tools/testing/selftests/bpf/prog_tests/d_path.c create mode 100644 tools/testing/selftests/bpf/progs/test_d_path.c create mode 100644 tools/testing/selftests/bpf/verifier/d_path.c