• Davide Caratti's avatar
    net/sched: cls_u32: fix refcount leak in the error path of u32_change() · 275c44aa
    Davide Caratti authored
    when users replace cls_u32 filters with new ones having wrong parameters,
    so that u32_change() fails to validate them, the kernel doesn't roll-back
    correctly, and leaves semi-configured rules.
    
    Fix this in u32_walk(), avoiding a call to the walker function on filters
    that don't have a match rule connected. The side effect is, these "empty"
    filters are not even dumped when present; but that shouldn't be a problem
    as long as we are restoring the original behaviour, where semi-configured
    filters were not even added in the error path of u32_change().
    
    Fixes: 6676d5e4 ("net: sched: set dedicated tcf_walker flag when tp is empty")
    Signed-off-by: default avatarDavide Caratti <dcaratti@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    275c44aa
cls_u32.c 33.6 KB