lsm_cgroup.c selftest fails to compile when CONFIG_PACKET!=y

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Compilation of lsm_cgroup.c will fail if the vmlinux.h comes from a
kernel that does _not_ have CONFIG_PACKET=y. The reason is that the
definition of struct sockaddr_ll is not present in vmlinux.h and the
compiler will complain that is has an incomplete type.

    CLNG-BPF [test_maps] lsm_cgroup.bpf.o
  progs/lsm_cgroup.c:105:21: error: variable has incomplete type 'struct sockaddr_ll'
    105 |         struct sockaddr_ll sa = {};
        |                            ^
  progs/lsm_cgroup.c:105:9: note: forward declaration of 'struct sockaddr_ll'
    105 |         struct sockaddr_ll sa = {};
        |                ^
  1 error generated.

While including linux/if_packet.h somehow made the compilation works for
me, IIUC this isn't a proper solution because vmlinux.h and kernel
headers should not be used at the same time (and would lead to
redefinition error when the kernel is built with CONFIG_PACKET=y, e.g.
on BPF CI).

What would be the suggested way to work around this?

Thanks,
Shung-Hsi

---
 tools/testing/selftests/bpf/progs/lsm_cgroup.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/testing/selftests/bpf/progs/lsm_cgroup.c b/tools/testing/selftests/bpf/progs/lsm_cgroup.c
index 02c11d16b692..5394ec7ae1d8 100644
--- a/tools/testing/selftests/bpf/progs/lsm_cgroup.c
+++ b/tools/testing/selftests/bpf/progs/lsm_cgroup.c
@@ -2,6 +2,7 @@
 
 #include "vmlinux.h"
 #include "bpf_tracing_net.h"
+#include <linux/if_packet.h>
 #include <bpf/bpf_helpers.h>
 #include <bpf/bpf_tracing.h>




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux