lkml.org 
[lkml]   [2021]   [Dec]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH bpf-next] selftests/bpf: Fix building error when using userspace pt_regs
    Date
    When building bpf selftests on arm64, the following error will occur:

    progs/loop2.c:20:7: error: incomplete definition of type 'struct
    user_pt_regs'

    Some archs, like arm64 and riscv, use userspace pt_regs in
    bpf_tracing.h, which causes build failure when bpf prog use
    macro in bpf_tracing.h. So let's use vmlinux.h directly.

    Signed-off-by: Pu Lehui <pulehui@huawei.com>
    ---
    tools/testing/selftests/bpf/progs/loop1.c | 8 ++------
    tools/testing/selftests/bpf/progs/loop2.c | 8 ++------
    tools/testing/selftests/bpf/progs/loop3.c | 8 ++------
    tools/testing/selftests/bpf/progs/loop6.c | 20 ++++++-------------
    .../selftests/bpf/progs/test_overhead.c | 8 ++------
    .../selftests/bpf/progs/test_probe_user.c | 6 +-----
    6 files changed, 15 insertions(+), 43 deletions(-)

    diff --git a/tools/testing/selftests/bpf/progs/loop1.c b/tools/testing/selftests/bpf/progs/loop1.c
    index 50e66772c046..ea04c035719c 100644
    --- a/tools/testing/selftests/bpf/progs/loop1.c
    +++ b/tools/testing/selftests/bpf/progs/loop1.c
    @@ -1,11 +1,7 @@
    // SPDX-License-Identifier: GPL-2.0
    // Copyright (c) 2019 Facebook
    -#include <linux/sched.h>
    -#include <linux/ptrace.h>
    -#include <stdint.h>
    -#include <stddef.h>
    -#include <stdbool.h>
    -#include <linux/bpf.h>
    +
    +#include "vmlinux.h"
    #include <bpf/bpf_helpers.h>
    #include <bpf/bpf_tracing.h>

    diff --git a/tools/testing/selftests/bpf/progs/loop2.c b/tools/testing/selftests/bpf/progs/loop2.c
    index 947bb7e988c2..edf07b1d310e 100644
    --- a/tools/testing/selftests/bpf/progs/loop2.c
    +++ b/tools/testing/selftests/bpf/progs/loop2.c
    @@ -1,11 +1,7 @@
    // SPDX-License-Identifier: GPL-2.0
    // Copyright (c) 2019 Facebook
    -#include <linux/sched.h>
    -#include <linux/ptrace.h>
    -#include <stdint.h>
    -#include <stddef.h>
    -#include <stdbool.h>
    -#include <linux/bpf.h>
    +
    +#include "vmlinux.h"
    #include <bpf/bpf_helpers.h>
    #include <bpf/bpf_tracing.h>

    diff --git a/tools/testing/selftests/bpf/progs/loop3.c b/tools/testing/selftests/bpf/progs/loop3.c
    index 76e93b31c14b..c8d2f2c55547 100644
    --- a/tools/testing/selftests/bpf/progs/loop3.c
    +++ b/tools/testing/selftests/bpf/progs/loop3.c
    @@ -1,11 +1,7 @@
    // SPDX-License-Identifier: GPL-2.0
    // Copyright (c) 2019 Facebook
    -#include <linux/sched.h>
    -#include <linux/ptrace.h>
    -#include <stdint.h>
    -#include <stddef.h>
    -#include <stdbool.h>
    -#include <linux/bpf.h>
    +
    +#include "vmlinux.h"
    #include <bpf/bpf_helpers.h>
    #include <bpf/bpf_tracing.h>

    diff --git a/tools/testing/selftests/bpf/progs/loop6.c b/tools/testing/selftests/bpf/progs/loop6.c
    index 38de0331e6b4..17ac4da5664d 100644
    --- a/tools/testing/selftests/bpf/progs/loop6.c
    +++ b/tools/testing/selftests/bpf/progs/loop6.c
    @@ -1,8 +1,6 @@
    // SPDX-License-Identifier: GPL-2.0

    -#include <linux/ptrace.h>
    -#include <stddef.h>
    -#include <linux/bpf.h>
    +#include "vmlinux.h"
    #include <bpf/bpf_helpers.h>
    #include <bpf/bpf_tracing.h>

    @@ -25,12 +23,6 @@ char _license[] SEC("license") = "GPL";
    #define SG_CHAIN 0x01UL
    #define SG_END 0x02UL

    -struct scatterlist {
    - unsigned long page_link;
    - unsigned int offset;
    - unsigned int length;
    -};
    -
    #define sg_is_chain(sg) ((sg)->page_link & SG_CHAIN)
    #define sg_is_last(sg) ((sg)->page_link & SG_END)
    #define sg_chain_ptr(sg) \
    @@ -61,8 +53,8 @@ static inline struct scatterlist *get_sgp(struct scatterlist **sgs, int i)
    return sgp;
    }

    -int config = 0;
    -int result = 0;
    +int g_config = 0;
    +int g_result = 0;

    SEC("kprobe/virtqueue_add_sgs")
    int BPF_KPROBE(trace_virtqueue_add_sgs, void *unused, struct scatterlist **sgs,
    @@ -72,7 +64,7 @@ int BPF_KPROBE(trace_virtqueue_add_sgs, void *unused, struct scatterlist **sgs,
    __u64 length1 = 0, length2 = 0;
    unsigned int i, n, len;

    - if (config != 0)
    + if (g_config != 0)
    return 0;

    for (i = 0; (i < VIRTIO_MAX_SGS) && (i < out_sgs); i++) {
    @@ -93,7 +85,7 @@ int BPF_KPROBE(trace_virtqueue_add_sgs, void *unused, struct scatterlist **sgs,
    }
    }

    - config = 1;
    - result = length2 - length1;
    + g_config = 1;
    + g_result = length2 - length1;
    return 0;
    }
    diff --git a/tools/testing/selftests/bpf/progs/test_overhead.c b/tools/testing/selftests/bpf/progs/test_overhead.c
    index abb7344b531f..df035e6a3143 100644
    --- a/tools/testing/selftests/bpf/progs/test_overhead.c
    +++ b/tools/testing/selftests/bpf/progs/test_overhead.c
    @@ -1,14 +1,10 @@
    // SPDX-License-Identifier: GPL-2.0
    /* Copyright (c) 2019 Facebook */
    -#include <stdbool.h>
    -#include <stddef.h>
    -#include <linux/bpf.h>
    -#include <linux/ptrace.h>
    +
    +#include "vmlinux.h"
    #include <bpf/bpf_helpers.h>
    #include <bpf/bpf_tracing.h>

    -struct task_struct;
    -
    SEC("kprobe/__set_task_comm")
    int BPF_KPROBE(prog1, struct task_struct *tsk, const char *buf, bool exec)
    {
    diff --git a/tools/testing/selftests/bpf/progs/test_probe_user.c b/tools/testing/selftests/bpf/progs/test_probe_user.c
    index 8812a90da4eb..bf6c0b864ace 100644
    --- a/tools/testing/selftests/bpf/progs/test_probe_user.c
    +++ b/tools/testing/selftests/bpf/progs/test_probe_user.c
    @@ -1,10 +1,6 @@
    // SPDX-License-Identifier: GPL-2.0

    -#include <linux/ptrace.h>
    -#include <linux/bpf.h>
    -
    -#include <netinet/in.h>
    -
    +#include "vmlinux.h"
    #include <bpf/bpf_helpers.h>
    #include <bpf/bpf_tracing.h>

    --
    2.25.1
    \
     
     \ /
      Last update: 2021-12-14 14:55    [W:3.045 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site