• Joe Stringer's avatar
    openvswitch: Fix template leak in error cases. · 90c7afc9
    Joe Stringer authored
    Commit 5b48bb8506c5 ("openvswitch: Fix helper reference leak") fixed a
    reference leak on helper objects, but inadvertently introduced a leak on
    the ct template.
    
    Previously, ct_info.ct->general.use was initialized to 0 by
    nf_ct_tmpl_alloc() and only incremented when ovs_ct_copy_action()
    returned successful. If an error occurred while adding the helper or
    adding the action to the actions buffer, the __ovs_ct_free_action()
    cleanup would use nf_ct_put() to free the entry; However, this relies on
    atomic_dec_and_test(ct_info.ct->general.use). This reference must be
    incremented first, or nf_ct_put() will never free it.
    
    Fix the issue by acquiring a reference to the template immediately after
    allocation.
    
    Fixes: cae3a262 ("openvswitch: Allow attaching helpers to ct action")
    Fixes: 5b48bb8506c5 ("openvswitch: Fix helper reference leak")
    Signed-off-by: default avatarJoe Stringer <joe@ovn.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    90c7afc9
conntrack.c 18.6 KB