• Yonghong Song's avatar
    libbpf: Fix a compilation error with xsk.c for ubuntu 16.04 · d317b0a8
    Yonghong Song authored
    When syncing latest libbpf repo to bcc, ubuntu 16.04 (4.4.0 LTS kernel)
    failed compilation for xsk.c:
      In file included from /tmp/debuild.0jkauG/bcc/src/cc/libbpf/src/xsk.c:23:0:
      /tmp/debuild.0jkauG/bcc/src/cc/libbpf/src/xsk.c: In function ‘xsk_get_ctx’:
      /tmp/debuild.0jkauG/bcc/src/cc/libbpf/include/linux/list.h:81:9: warning: implicit
      declaration of function ‘container_of’ [-Wimplicit-function-declaration]
               container_of(ptr, type, member)
               ^
      /tmp/debuild.0jkauG/bcc/src/cc/libbpf/include/linux/list.h:83:9: note: in expansion
      of macro ‘list_entry’
               list_entry((ptr)->next, type, member)
      ...
      src/cc/CMakeFiles/bpf-static.dir/build.make:209: recipe for target
      'src/cc/CMakeFiles/bpf-static.dir/libbpf/src/xsk.c.o' failed
    
    Commit 2f6324a3 ("libbpf: Support shared umems between queues and devices")
    added include file <linux/list.h>, which uses macro "container_of".
    xsk.c file also includes <linux/ethtool.h> before <linux/list.h>.
    
    In a more recent distro kernel, <linux/ethtool.h> includes <linux/kernel.h>
    which contains the macro definition for "container_of". So compilation is all fine.
    But in ubuntu 16.04 kernel, <linux/ethtool.h> does not contain <linux/kernel.h>
    which caused the above compilation error.
    
    Let explicitly add <linux/kernel.h> in xsk.c to avoid compilation error
    in old distro's.
    
    Fixes: 2f6324a3 ("libbpf: Support shared umems between queues and devices")
    Signed-off-by: default avatarYonghong Song <yhs@fb.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Acked-by: default avatarAndrii Nakryiko <andriin@fb.com>
    Acked-by: default avatarSong Liu <songliubraving@fb.com>
    Link: https://lore.kernel.org/bpf/20200914223210.1831262-1-yhs@fb.com
    d317b0a8
xsk.c 20.8 KB