• Jakub Kicinski's avatar
    nfp: bpf: allow zero-length capabilities · 26aeb9da
    Jakub Kicinski authored
    Some BPF capabilities carry no value, they simply indicate feature
    is present.  Our capability parsing loop will exit early if last
    capability is zero-length because it's looking for more than 8 bytes
    of data (8B is our TLV header length).  Allow the last capability to
    be zero-length.
    
    This bug would lead to driver failing to probe with the following error
    if the last capability FW advertises is zero-length:
    
        nfp: BPF capabilities left after parsing, parsed:92 total length:100
        nfp: invalid BPF capabilities at offset:92
    
    Note the "parsed" and "length" values are 8 apart.
    
    No shipping FW runs into this issue, but we can't guarantee that will
    remain the case.
    
    Fixes: 77a844ee ("nfp: bpf: prepare for parsing BPF FW capabilities")
    Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
    Reviewed-by: default avatarQuentin Monnet <quentin.monnet@netronome.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    26aeb9da
main.c 11.1 KB