• John Fastabend's avatar
    bpf: sockmap update rollback on error can incorrectly dec prog refcnt · a593f708
    John Fastabend authored
    If the user were to only attach one of the parse or verdict programs
    then it is possible a subsequent sockmap update could incorrectly
    decrement the refcnt on the program. This happens because in the
    rollback logic, after an error, we have to decrement the program
    reference count when its been incremented. However, we only increment
    the program reference count if the user has both a verdict and a
    parse program. The reason for this is because, at least at the
    moment, both are required for any one to be meaningful. The problem
    fixed here is in the rollback path we decrement the program refcnt
    even if only one existing. But we never incremented the refcnt in
    the first place creating an imbalance.
    
    This patch fixes the error path to handle this case.
    
    Fixes: 2f857d04 ("bpf: sockmap, remove STRPARSER map_flags and add multi-map support")
    Reported-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: default avatarJohn Fastabend <john.fastabend@gmail.com>
    Acked-by: default avatarMartin KaFai Lau <kafai@fb.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    a593f708
sockmap.c 44.4 KB