• Daniel Borkmann's avatar
    net: cls_bpf: fix auto generation of per list handles · 3f2ab135
    Daniel Borkmann authored
    When creating a bpf classifier in tc with priority collisions and
    invoking automatic unique handle assignment, cls_bpf_grab_new_handle()
    will return a wrong handle id which in fact is non-unique. Usually
    altering of specific filters is being addressed over major id, but
    in case of collisions we result in a filter chain, where handle ids
    address individual cls_bpf_progs inside the classifier.
    
    Issue is, in cls_bpf_grab_new_handle() we probe for head->hgen handle
    in cls_bpf_get() and in case we found a free handle, we're supposed
    to use exactly head->hgen. In case of insufficient numbers of handles,
    we bail out later as handle id 0 is not allowed.
    
    Fixes: 7d1d65cb ("net: sched: cls_bpf: add BPF-based classifier")
    Signed-off-by: default avatarDaniel Borkmann <dborkman@redhat.com>
    Acked-by: default avatarJiri Pirko <jiri@resnulli.us>
    Acked-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    3f2ab135
cls_bpf.c 8.29 KB