|
@@ -187,6 +187,7 @@ static void destroy_dp_rcu(struct rcu_head *rcu)
|
|
|
{
|
|
|
struct datapath *dp = container_of(rcu, struct datapath, rcu);
|
|
|
|
|
|
+ ovs_flow_tbl_destroy(&dp->table);
|
|
|
free_percpu(dp->stats_percpu);
|
|
|
release_net(ovs_dp_get_net(dp));
|
|
|
kfree(dp->ports);
|
|
@@ -1444,7 +1445,7 @@ err_destroy_ports_array:
|
|
|
err_destroy_percpu:
|
|
|
free_percpu(dp->stats_percpu);
|
|
|
err_destroy_table:
|
|
|
- ovs_flow_tbl_destroy(&dp->table, false);
|
|
|
+ ovs_flow_tbl_destroy(&dp->table);
|
|
|
err_free_dp:
|
|
|
release_net(ovs_dp_get_net(dp));
|
|
|
kfree(dp);
|
|
@@ -1476,8 +1477,6 @@ static void __dp_destroy(struct datapath *dp)
|
|
|
ovs_dp_detach_port(ovs_vport_ovsl(dp, OVSP_LOCAL));
|
|
|
|
|
|
/* RCU destroy the flow table */
|
|
|
- ovs_flow_tbl_destroy(&dp->table, true);
|
|
|
-
|
|
|
call_rcu(&dp->rcu, destroy_dp_rcu);
|
|
|
}
|
|
|
|