From patchwork Wed Apr 26 18:24:19 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hannes Frederic Sowa X-Patchwork-Id: 755590 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3wCpQg2Bxlz9s8W for ; Thu, 27 Apr 2017 04:24:59 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=stressinduktion.org header.i=@stressinduktion.org header.b="XKtEC+lw"; dkim=pass (2048-bit key; unprotected) header.d=messagingengine.com header.i=@messagingengine.com header.b="RFsWRU2i"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933504AbdDZSY4 (ORCPT ); Wed, 26 Apr 2017 14:24:56 -0400 Received: from out4-smtp.messagingengine.com ([66.111.4.28]:34243 "EHLO out4-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933408AbdDZSYr (ORCPT ); Wed, 26 Apr 2017 14:24:47 -0400 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id B2E4621D1E; Wed, 26 Apr 2017 14:24:46 -0400 (EDT) Received: from frontend1 ([10.202.2.160]) by compute7.internal (MEProxy); Wed, 26 Apr 2017 14:24:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= stressinduktion.org; h=cc:date:from:in-reply-to:message-id :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc :x-sasl-enc; s=fm1; bh=I1OKZSe/YtqHAAyeK6uY5/eDGh4919jx7IdB2y3Vl C0=; b=XKtEC+lwSf+0UVrTtuv8efuezElKgTQT99J+W08Ah9UNAvTrVMba1j8Lc EisV9r0CC6MNpEn0GnrOUpqDhRH8djEthfGbuIGFt0nvADvdSHhRc0fDoRz730ok c2gaNpuT8C6pKZ27TsSbLNsIcpntNQONfs4J8SC/P5Dtdy5se22b6YpUsqO1P1vi JW9tZoq70XLgkdLSPzWORo9i/qKjiV20Hvzi9SXDZGFQBvnN+8rCagabsDv3MJ0x 0+Pmy06Ljl13TwiVdgpYIPrcsI60E6Rt66wKXj19y1sO5ygkwSlJ7qx3zGsL/GGk EoJ+2mcrxr99Dd88i7xIfWRDuBMYA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:date:from:in-reply-to:message-id :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc :x-sasl-enc; s=fm1; bh=I1OKZSe/YtqHAAyeK6uY5/eDGh4919jx7IdB2y3Vl C0=; b=RFsWRU2itbqhcROF/LDWKGDK6jZ9XT6cZG2Cv7fQ6wzlgaTJ1mK3tbj6V w9Z9Eh9gW0JdyKOYeVhVeHYyhYNoH9rpj0bkbZ0y0lkff6ttEemrqTJI2w7v6WC5 +6GvY34fg48tkQCEZVNkTt8jksoyXecbfoB5O2MzrlUdrMcNymsLspad7rWRj+0Q DZ+RSBH6Q/WUx4FAHQObOH+BeeQO4Yiobe+qG00otrl/cN3X36oVsLGS9f8iUq/B v975mfPJO9SwNCGFboEfELNhw52OBh9AlBq/QNWaYFI5th5qH0RF7kcj2rNZ+yK+ YZQjKW4pm/hT1VGSx1DKMjUB4gTUw== X-ME-Sender: X-Sasl-enc: MQXej8XsNizaouOXRcYlr6TTDymHqjq5L7gzLJ0duuD/ 1493231085 Received: from m.localhost.localhost (unknown [213.55.211.100]) by mail.messagingengine.com (Postfix) with ESMTPA id D95097E0A4; Wed, 26 Apr 2017 14:24:44 -0400 (EDT) From: Hannes Frederic Sowa To: netdev@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.com, jbenc@redhat.com, aconole@bytheb.org Subject: [PATCH net-next 6/6] bpf: show bpf programs Date: Wed, 26 Apr 2017 20:24:19 +0200 Message-Id: <20170426182419.14574-7-hannes@stressinduktion.org> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170426182419.14574-1-hannes@stressinduktion.org> References: <20170426182419.14574-1-hannes@stressinduktion.org> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Signed-off-by: Hannes Frederic Sowa --- include/uapi/linux/bpf.h | 32 +++++++++++++++++++------------- kernel/bpf/core.c | 30 +++++++++++++++++++++++++++++- 2 files changed, 48 insertions(+), 14 deletions(-) diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index e553529929f683..d6506e320953d5 100644 --- a/include/uapi/linux/bpf.h +++ b/include/uapi/linux/bpf.h @@ -101,20 +101,26 @@ enum bpf_map_type { BPF_MAP_TYPE_HASH_OF_MAPS, }; +#define BPF_PROG_TYPES \ + X(BPF_PROG_TYPE_UNSPEC), \ + X(BPF_PROG_TYPE_SOCKET_FILTER), \ + X(BPF_PROG_TYPE_KPROBE), \ + X(BPF_PROG_TYPE_SCHED_CLS), \ + X(BPF_PROG_TYPE_SCHED_ACT), \ + X(BPF_PROG_TYPE_TRACEPOINT), \ + X(BPF_PROG_TYPE_XDP), \ + X(BPF_PROG_TYPE_PERF_EVENT), \ + X(BPF_PROG_TYPE_CGROUP_SKB), \ + X(BPF_PROG_TYPE_CGROUP_SOCK), \ + X(BPF_PROG_TYPE_LWT_IN), \ + X(BPF_PROG_TYPE_LWT_OUT), \ + X(BPF_PROG_TYPE_LWT_XMIT), + + enum bpf_prog_type { - BPF_PROG_TYPE_UNSPEC, - BPF_PROG_TYPE_SOCKET_FILTER, - BPF_PROG_TYPE_KPROBE, - BPF_PROG_TYPE_SCHED_CLS, - BPF_PROG_TYPE_SCHED_ACT, - BPF_PROG_TYPE_TRACEPOINT, - BPF_PROG_TYPE_XDP, - BPF_PROG_TYPE_PERF_EVENT, - BPF_PROG_TYPE_CGROUP_SKB, - BPF_PROG_TYPE_CGROUP_SOCK, - BPF_PROG_TYPE_LWT_IN, - BPF_PROG_TYPE_LWT_OUT, - BPF_PROG_TYPE_LWT_XMIT, +#define X(type) type + BPF_PROG_TYPES +#undef X }; enum bpf_attach_type { diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c index 3ba175a24e971a..685c1d0f31e029 100644 --- a/kernel/bpf/core.c +++ b/kernel/bpf/core.c @@ -536,13 +536,41 @@ static void ebpf_proc_stop(struct seq_file *s, void *v) rcu_read_unlock(); } +static const char *bpf_type_string(enum bpf_prog_type type) +{ + static const char *bpf_type_names[] = { +#define X(type) #type + BPF_PROG_TYPES +#undef X + }; + + if (type >= ARRAY_SIZE(bpf_type_names)) + return ""; + + return bpf_type_names[type]; +} + static int ebpf_proc_show(struct seq_file *s, void *v) { + struct bpf_prog *prog; + struct bpf_prog_aux *aux; + char prog_tag[sizeof(prog->tag) * 2 + 1] = { }; + if (v == SEQ_START_TOKEN) { - seq_printf(s, "# tag\n"); + seq_printf(s, "# tag\t\t\ttype\t\t\truntime\tcap\tmemlock\n"); return 0; } + aux = v; + prog = aux->prog; + + bin2hex(prog_tag, prog->tag, sizeof(prog->tag)); + seq_printf(s, "%s\t%s\t%s\t%s\t%llu\n", prog_tag, + bpf_type_string(prog->type), + prog->jited ? "jit" : "int", + prog->priv_cap_sys_admin ? "priv" : "unpriv", + prog->pages * 1ULL << PAGE_SHIFT); + return 0; }