• Roman Mashak's avatar
    net sched actions: fix refcnt leak in skbmod · a52956df
    Roman Mashak authored
    When application fails to pass flags in netlink TLV when replacing
    existing skbmod action, the kernel will leak refcnt:
    
    $ tc actions get action skbmod index 1
    total acts 0
    
            action order 0: skbmod pipe set smac 00:11:22:33:44:55
             index 1 ref 1 bind 0
    
    For example, at this point a buggy application replaces the action with
    index 1 with new smac 00:aa:22:33:44:55, it fails because of zero flags,
    however refcnt gets bumped:
    
    $ tc actions get actions skbmod index 1
    total acts 0
    
            action order 0: skbmod pipe set smac 00:11:22:33:44:55
             index 1 ref 2 bind 0
    $
    
    Tha patch fixes this by calling tcf_idr_release() on existing actions.
    
    Fixes: 86da71b5 ("net_sched: Introduce skbmod action")
    Signed-off-by: default avatarRoman Mashak <mrv@mojatatu.com>
    Acked-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a52956df
act_skbmod.c 7.57 KB