From patchwork Sat Dec 4 09:52:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yafang Shao X-Patchwork-Id: 12656435 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 14847C433F5 for ; Sat, 4 Dec 2021 09:56:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 410656B0085; Sat, 4 Dec 2021 04:53:25 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3C0466B0087; Sat, 4 Dec 2021 04:53:25 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 260686B0088; Sat, 4 Dec 2021 04:53:25 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0106.hostedemail.com [216.40.44.106]) by kanga.kvack.org (Postfix) with ESMTP id 179116B0085 for ; Sat, 4 Dec 2021 04:53:25 -0500 (EST) Received: from smtpin27.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id D5BA71841B9F1 for ; Sat, 4 Dec 2021 09:53:14 +0000 (UTC) X-FDA: 78879648708.27.347214B Received: from mail-pg1-f172.google.com (mail-pg1-f172.google.com [209.85.215.172]) by imf22.hostedemail.com (Postfix) with ESMTP id 985B51903 for ; Sat, 4 Dec 2021 09:53:14 +0000 (UTC) Received: by mail-pg1-f172.google.com with SMTP id r5so5538520pgi.6 for ; Sat, 04 Dec 2021 01:53:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=czJoVryBJuRcT/ehuX/TDIeW+lRJT86wq9/OvXnh70g=; b=E6qLZya8+ifZxNJOIPiTCTofzYjJThBlfeuM51/2mqfsnjW5NtrNTz/6a0nEh7jmKU VGTTs3/RbA7s8syhuDBh+k70qRK3hetMq9n8itSkvFJ+mtTIN0Uc+WJOANDPdKHwH8vs k8udbqT/eL9Tzpjtsu+6e9o/SLIkzrLwPCDSvquIL+N5FwmpTXeP1wqnmE7nQK/1dJZO ksP728T5KeU42m8NPGDNz1UCB83nn0OrhifZgrDL+dypJQ5KxuroJ3f30wEMYdTajgp1 tA72KBktvSwUiATQBi7Hc+gb1PlQJIXCz0eUPuwixg5JmBdOEYIRfpkwowmfkmIn30dq VNVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=czJoVryBJuRcT/ehuX/TDIeW+lRJT86wq9/OvXnh70g=; b=uA6CmUYTetKxCy7Kr7fDpfVqINHulEArs5rS9/FSqLtSiEQVomS4t8hesgJur/+QnH N7p3ZEeeN7hDDX61FWvP2BottJAHUdsvlPbq3dDf/BLse+Od8zLZeM9/ss6a60coRTBF DpReybAIgW8Kal/QclQ2rnFmTccYYLyRVj3N4WQjNfdrxtXwYlmtBnxtkz2YxsHV2Zm5 RO9LrZ9vGRKL3wYlVZSUHYufivNQEyaKKbslyxiFvtZgTqdB2/pS2FlZdwcXiTW8NEz7 y7NQb+Q+bGppTlr6vRKQZsNftEo2sR3XhtvtPHedPrlqnUMiTg5F81F6hgRgEky4hoqG E9QQ== X-Gm-Message-State: AOAM533VjjFXBXlQeie5x6qNds3WcgwcyoKmZS1ATfRmGv52IJ8asdSx oQfVC3WYt60FlPnRr2Ut28A= X-Google-Smtp-Source: ABdhPJxzLifxgl4vQbzEDYn+z7ENKxXxDFCDs3LmIROFaOViZ6d6BbSiRJPdAV7fU9k00bDw17QoEA== X-Received: by 2002:a65:6790:: with SMTP id e16mr8839078pgr.112.1638611593497; Sat, 04 Dec 2021 01:53:13 -0800 (PST) Received: from vultr.guest ([45.76.74.237]) by smtp.gmail.com with ESMTPSA id ms15sm4343198pjb.26.2021.12.04.01.53.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 04 Dec 2021 01:53:13 -0800 (PST) From: Yafang Shao To: akpm@linux-foundation.org, rostedt@goodmis.org, keescook@chromium.org, pmladek@suse.com, david@redhat.com, arnaldo.melo@gmail.com, andrii.nakryiko@gmail.com Cc: linux-mm@kvack.org, bpf@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Yafang Shao , Mathieu Desnoyers , Alexei Starovoitov , Michal Miroslaw , Peter Zijlstra , Matthew Wilcox , Al Viro Subject: [PATCH -mm 5/5] bpf/progs: replace hard-coded 16 with TASK_COMM_LEN Date: Sat, 4 Dec 2021 09:52:56 +0000 Message-Id: <20211204095256.78042-6-laoar.shao@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20211204095256.78042-1-laoar.shao@gmail.com> References: <20211204095256.78042-1-laoar.shao@gmail.com> MIME-Version: 1.0 X-Stat-Signature: yo7aie3sjdchbeakz4x9ytummiotq89r Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=E6qLZya8; spf=pass (imf22.hostedemail.com: domain of laoar.shao@gmail.com designates 209.85.215.172 as permitted sender) smtp.mailfrom=laoar.shao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 985B51903 X-HE-Tag: 1638611594-405643 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: The comm used in these bpf progs should have the same size with the comm field in struct task_struct defined in linux/sched.h. We'd better define the size as TASK_COMM_LEN to make it more grepable. The bpf progs kernel code can inlcude vmlinux.h generated by BTF CO-RE to use TASK_COMM_LEN, while the userspace code can't include it so TASK_COMM_LEN is specifically defined in the userspace code. In order to fix redefinitions caused by the new included vmlinux.h, some headers are removed and some structs are renamed. Signed-off-by: Yafang Shao Cc: Mathieu Desnoyers Cc: Arnaldo Carvalho de Melo Cc: Alexei Starovoitov Cc: Andrii Nakryiko Cc: Michal Miroslaw Cc: Peter Zijlstra Cc: Steven Rostedt Cc: Matthew Wilcox Cc: David Hildenbrand Cc: Al Viro Cc: Kees Cook Cc: Petr Mladek --- tools/testing/selftests/bpf/prog_tests/ringbuf.c | 9 +++++---- .../testing/selftests/bpf/prog_tests/ringbuf_multi.c | 8 +++++--- .../selftests/bpf/prog_tests/sk_storage_tracing.c | 3 ++- .../testing/selftests/bpf/prog_tests/test_overhead.c | 3 ++- .../selftests/bpf/prog_tests/trampoline_count.c | 3 ++- .../selftests/bpf/progs/test_core_reloc_kernel.c | 11 +++++------ tools/testing/selftests/bpf/progs/test_ringbuf.c | 8 ++++---- .../testing/selftests/bpf/progs/test_ringbuf_multi.c | 8 ++++---- .../selftests/bpf/progs/test_sk_storage_tracing.c | 4 ++-- 9 files changed, 31 insertions(+), 26 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/ringbuf.c b/tools/testing/selftests/bpf/prog_tests/ringbuf.c index 9a80fe8a6427..39e43245db0a 100644 --- a/tools/testing/selftests/bpf/prog_tests/ringbuf.c +++ b/tools/testing/selftests/bpf/prog_tests/ringbuf.c @@ -15,14 +15,15 @@ #include "test_ringbuf.lskel.h" #define EDONE 7777 +#define TASK_COMM_LEN 16 static int duration = 0; -struct sample { +struct sample_ringbuf { int pid; int seq; long value; - char comm[16]; + char comm[TASK_COMM_LEN]; }; static int sample_cnt; @@ -39,7 +40,7 @@ static int atomic_xchg(int *cnt, int val) static int process_sample(void *ctx, void *data, size_t len) { - struct sample *s = data; + struct sample_ringbuf *s = data; atomic_inc(&sample_cnt); @@ -83,7 +84,7 @@ static void *poll_thread(void *input) void test_ringbuf(void) { - const size_t rec_sz = BPF_RINGBUF_HDR_SZ + sizeof(struct sample); + const size_t rec_sz = BPF_RINGBUF_HDR_SZ + sizeof(struct sample_ringbuf); pthread_t thread; long bg_ret = -1; int err, cnt, rb_fd; diff --git a/tools/testing/selftests/bpf/prog_tests/ringbuf_multi.c b/tools/testing/selftests/bpf/prog_tests/ringbuf_multi.c index e945195b24c9..cb592555513f 100644 --- a/tools/testing/selftests/bpf/prog_tests/ringbuf_multi.c +++ b/tools/testing/selftests/bpf/prog_tests/ringbuf_multi.c @@ -4,19 +4,21 @@ #include #include "test_ringbuf_multi.skel.h" +#define TASK_COMM_LEN 16 + static int duration = 0; -struct sample { +struct sample_ringbuf { int pid; int seq; long value; - char comm[16]; + char comm[TASK_COMM_LEN]; }; static int process_sample(void *ctx, void *data, size_t len) { int ring = (unsigned long)ctx; - struct sample *s = data; + struct sample_ringbuf *s = data; switch (s->seq) { case 0: diff --git a/tools/testing/selftests/bpf/prog_tests/sk_storage_tracing.c b/tools/testing/selftests/bpf/prog_tests/sk_storage_tracing.c index 547ae53cde74..dbbdbf4400d7 100644 --- a/tools/testing/selftests/bpf/prog_tests/sk_storage_tracing.c +++ b/tools/testing/selftests/bpf/prog_tests/sk_storage_tracing.c @@ -11,11 +11,12 @@ #define LO_ADDR6 "::1" #define TEST_COMM "test_progs" +#define TASK_COMM_LEN 16 struct sk_stg { __u32 pid; __u32 last_notclose_state; - char comm[16]; + char comm[TASK_COMM_LEN]; }; static struct test_sk_storage_tracing *skel; diff --git a/tools/testing/selftests/bpf/prog_tests/test_overhead.c b/tools/testing/selftests/bpf/prog_tests/test_overhead.c index 123c68c1917d..7fe60ec12fc4 100644 --- a/tools/testing/selftests/bpf/prog_tests/test_overhead.c +++ b/tools/testing/selftests/bpf/prog_tests/test_overhead.c @@ -6,6 +6,7 @@ #include #define MAX_CNT 100000 +#define TASK_COMM_LEN 16 static __u64 time_get_ns(void) { @@ -67,7 +68,7 @@ void test_test_overhead(void) struct bpf_object *obj; struct bpf_link *link; int err, duration = 0; - char comm[16] = {}; + char comm[TASK_COMM_LEN] = {}; if (CHECK_FAIL(prctl(PR_GET_NAME, comm, 0L, 0L, 0L))) return; diff --git a/tools/testing/selftests/bpf/prog_tests/trampoline_count.c b/tools/testing/selftests/bpf/prog_tests/trampoline_count.c index fc146671b20a..da83f7408aa8 100644 --- a/tools/testing/selftests/bpf/prog_tests/trampoline_count.c +++ b/tools/testing/selftests/bpf/prog_tests/trampoline_count.c @@ -5,6 +5,7 @@ #include #define MAX_TRAMP_PROGS 38 +#define TASK_COMM_LEN 16 struct inst { struct bpf_object *obj; @@ -51,7 +52,7 @@ void serial_test_trampoline_count(void) int err, i = 0, duration = 0; struct bpf_object *obj; struct bpf_link *link; - char comm[16] = {}; + char comm[TASK_COMM_LEN] = {}; /* attach 'allowed' trampoline programs */ for (i = 0; i < MAX_TRAMP_PROGS; i++) { diff --git a/tools/testing/selftests/bpf/progs/test_core_reloc_kernel.c b/tools/testing/selftests/bpf/progs/test_core_reloc_kernel.c index 145028b52ad8..7b1bb73c3501 100644 --- a/tools/testing/selftests/bpf/progs/test_core_reloc_kernel.c +++ b/tools/testing/selftests/bpf/progs/test_core_reloc_kernel.c @@ -1,8 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 // Copyright (c) 2019 Facebook -#include -#include +#include #include #include #include @@ -23,11 +22,11 @@ struct core_reloc_kernel_output { int comm_len; }; -struct task_struct { +struct task_struct_reloc { int pid; int tgid; - char comm[16]; - struct task_struct *group_leader; + char comm[TASK_COMM_LEN]; + struct task_struct_reloc *group_leader; }; #define CORE_READ(dst, src) bpf_core_read(dst, sizeof(*(dst)), src) @@ -35,7 +34,7 @@ struct task_struct { SEC("raw_tracepoint/sys_enter") int test_core_kernel(void *ctx) { - struct task_struct *task = (void *)bpf_get_current_task(); + struct task_struct_reloc *task = (void *)bpf_get_current_task(); struct core_reloc_kernel_output *out = (void *)&data.out; uint64_t pid_tgid = bpf_get_current_pid_tgid(); uint32_t real_tgid = (uint32_t)pid_tgid; diff --git a/tools/testing/selftests/bpf/progs/test_ringbuf.c b/tools/testing/selftests/bpf/progs/test_ringbuf.c index eaa7d9dba0be..45b28965f3a5 100644 --- a/tools/testing/selftests/bpf/progs/test_ringbuf.c +++ b/tools/testing/selftests/bpf/progs/test_ringbuf.c @@ -1,16 +1,16 @@ // SPDX-License-Identifier: GPL-2.0 // Copyright (c) 2020 Facebook -#include +#include #include char _license[] SEC("license") = "GPL"; -struct sample { +struct sample_ringbuf { int pid; int seq; long value; - char comm[16]; + char comm[TASK_COMM_LEN]; }; struct { @@ -39,7 +39,7 @@ SEC("fentry/__x64_sys_getpgid") int test_ringbuf(void *ctx) { int cur_pid = bpf_get_current_pid_tgid() >> 32; - struct sample *sample; + struct sample_ringbuf *sample; int zero = 0; if (cur_pid != pid) diff --git a/tools/testing/selftests/bpf/progs/test_ringbuf_multi.c b/tools/testing/selftests/bpf/progs/test_ringbuf_multi.c index 197b86546dca..7c9db148f168 100644 --- a/tools/testing/selftests/bpf/progs/test_ringbuf_multi.c +++ b/tools/testing/selftests/bpf/progs/test_ringbuf_multi.c @@ -1,16 +1,16 @@ // SPDX-License-Identifier: GPL-2.0 // Copyright (c) 2020 Facebook -#include +#include #include char _license[] SEC("license") = "GPL"; -struct sample { +struct sample_ringbuf { int pid; int seq; long value; - char comm[16]; + char comm[TASK_COMM_LEN]; }; struct ringbuf_map { @@ -55,7 +55,7 @@ SEC("tp/syscalls/sys_enter_getpgid") int test_ringbuf(void *ctx) { int cur_pid = bpf_get_current_pid_tgid() >> 32; - struct sample *sample; + struct sample_ringbuf *sample; void *rb; int zero = 0; diff --git a/tools/testing/selftests/bpf/progs/test_sk_storage_tracing.c b/tools/testing/selftests/bpf/progs/test_sk_storage_tracing.c index 6dc1f28fc4b6..cc41a09e3130 100644 --- a/tools/testing/selftests/bpf/progs/test_sk_storage_tracing.c +++ b/tools/testing/selftests/bpf/progs/test_sk_storage_tracing.c @@ -9,7 +9,7 @@ struct sk_stg { __u32 pid; __u32 last_notclose_state; - char comm[16]; + char comm[TASK_COMM_LEN]; }; struct { @@ -27,7 +27,7 @@ struct { __type(value, int); } del_sk_stg_map SEC(".maps"); -char task_comm[16] = ""; +char task_comm[TASK_COMM_LEN] = ""; SEC("tp_btf/inet_sock_set_state") int BPF_PROG(trace_inet_sock_set_state, struct sock *sk, int oldstate,