• David S. Miller's avatar
    Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next · b9f672af
    David S. Miller authored
    Daniel Borkmann says:
    
    ====================
    pull-request: bpf-next 2018-05-17
    
    The following pull-request contains BPF updates for your *net-next* tree.
    
    The main changes are:
    
    1) Provide a new BPF helper for doing a FIB and neighbor lookup
       in the kernel tables from an XDP or tc BPF program. The helper
       provides a fast-path for forwarding packets. The API supports
       IPv4, IPv6 and MPLS protocols, but currently IPv4 and IPv6 are
       implemented in this initial work, from David (Ahern).
    
    2) Just a tiny diff but huge feature enabled for nfp driver by
       extending the BPF offload beyond a pure host processing offload.
       Offloaded XDP programs are allowed to set the RX queue index and
       thus opening the door for defining a fully programmable RSS/n-tuple
       filter replacement. Once BPF decided on a queue already, the device
       data-path will skip the conventional RSS processing completely,
       from Jakub.
    
    3) The original sockmap implementation was array based similar to
       devmap. However unlike devmap where an ifindex has a 1:1 mapping
       into the map there are use cases with sockets that need to be
       referenced using longer keys. Hence, sockhash map is added reusing
       as much of the sockmap code as possible, from John.
    
    4) Introduce BTF ID. The ID is allocatd through an IDR similar as
       with BPF maps and progs. It also makes BTF accessible to user
       space via BPF_BTF_GET_FD_BY_ID and adds exposure of the BTF data
       through BPF_OBJ_GET_INFO_BY_FD, from Martin.
    
    5) Enable BPF stackmap with build_id also in NMI context. Due to the
       up_read() of current->mm->mmap_sem build_id cannot be parsed.
       This work defers the up_read() via a per-cpu irq_work so that
       at least limited support can be enabled, from Song.
    
    6) Various BPF JIT follow-up cleanups and fixups after the LD_ABS/LD_IND
       JIT conversion as well as implementation of an optimized 32/64 bit
       immediate load in the arm64 JIT that allows to reduce the number of
       emitted instructions; in case of tested real-world programs they
       were shrinking by three percent, from Daniel.
    
    7) Add ifindex parameter to the libbpf loader in order to enable
       BPF offload support. Right now only iproute2 can load offloaded
       BPF and this will also enable libbpf for direct integration into
       other applications, from David (Beckett).
    
    8) Convert the plain text documentation under Documentation/bpf/ into
       RST format since this is the appropriate standard the kernel is
       moving to for all documentation. Also add an overview README.rst,
       from Jesper.
    
    9) Add __printf verification attribute to the bpf_verifier_vlog()
       helper. Though it uses va_list we can still allow gcc to check
       the format string, from Mathieu.
    
    10) Fix a bash reference in the BPF selftest's Makefile. The '|& ...'
        is a bash 4.0+ feature which is not guaranteed to be available
        when calling out to shell, therefore use a more portable variant,
        from Joe.
    
    11) Fix a 64 bit division in xdp_umem_reg() by using div_u64()
        instead of relying on the gcc built-in, from Björn.
    
    12) Fix a sock hashmap kmalloc warning reported by syzbot when an
        overly large key size is used in hashmap then causing overflows
        in htab->elem_size. Reject bogus attr->key_size early in the
        sock_hash_alloc(), from Yonghong.
    
    13) Ensure in BPF selftests when urandom_read is being linked that
        --build-id is always enabled so that test_stacktrace_build_id[_nmi]
        won't be failing, from Alexei.
    
    14) Add bitsperlong.h as well as errno.h uapi headers into the tools
        header infrastructure which point to one of the arch specific
        uapi headers. This was needed in order to fix a build error on
        some systems for the BPF selftests, from Sirio.
    
    15) Allow for short options to be used in the xdp_monitor BPF sample
        code. And also a bpf.h tools uapi header sync in order to fix a
        selftest build failure. Both from Prashant.
    
    16) More formally clarify the meaning of ID in the direct packet access
        section of the BPF documentation, from Wang.
    ====================
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b9f672af
route.c 130 KB