OSDN Git Service

openvswitch: use after free in __ovs_ct_free_action()
authorDan Carpenter <dan.carpenter@oracle.com>
Tue, 2 Apr 2019 06:53:14 +0000 (09:53 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 2 Apr 2019 17:56:21 +0000 (10:56 -0700)
We free "ct_info->ct" and then use it on the next line when we pass it
to nf_ct_destroy_timeout().  This patch swaps the order to avoid the use
after free.

Fixes: 06bd2bdf19d2 ("openvswitch: Add timeout support to ct action")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Yi-Hung Wei <yihung.wei@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/openvswitch/conntrack.c

index 121b01d..0be3ab5 100644 (file)
@@ -1804,9 +1804,9 @@ static void __ovs_ct_free_action(struct ovs_conntrack_info *ct_info)
        if (ct_info->helper)
                nf_conntrack_helper_put(ct_info->helper);
        if (ct_info->ct) {
-               nf_ct_tmpl_free(ct_info->ct);
                if (ct_info->timeout[0])
                        nf_ct_destroy_timeout(ct_info->ct);
+               nf_ct_tmpl_free(ct_info->ct);
        }
 }