Commit 11d6c461 authored by Daniel Borkmann's avatar Daniel Borkmann Committed by Jesse Gross

net: ovs: use kfree_rcu instead of rcu_free_{sw_flow_mask_cb,acts_callback}

As we're only doing a kfree() anyway in the RCU callback, we can
simply use kfree_rcu, which does the same job, and remove the
function rcu_free_sw_flow_mask_cb() and rcu_free_acts_callback().
Signed-off-by: default avatarDaniel Borkmann <dborkman@redhat.com>
Signed-off-by: default avatarJesse Gross <jesse@nicira.com>
parent e298e505
...@@ -1176,19 +1176,11 @@ struct sw_flow_actions *ovs_nla_alloc_flow_actions(int size) ...@@ -1176,19 +1176,11 @@ struct sw_flow_actions *ovs_nla_alloc_flow_actions(int size)
return sfa; return sfa;
} }
/* RCU callback used by ovs_nla_free_flow_actions. */
static void rcu_free_acts_callback(struct rcu_head *rcu)
{
struct sw_flow_actions *sf_acts = container_of(rcu,
struct sw_flow_actions, rcu);
kfree(sf_acts);
}
/* Schedules 'sf_acts' to be freed after the next RCU grace period. /* Schedules 'sf_acts' to be freed after the next RCU grace period.
* The caller must hold rcu_read_lock for this to be sensible. */ * The caller must hold rcu_read_lock for this to be sensible. */
void ovs_nla_free_flow_actions(struct sw_flow_actions *sf_acts) void ovs_nla_free_flow_actions(struct sw_flow_actions *sf_acts)
{ {
call_rcu(&sf_acts->rcu, rcu_free_acts_callback); kfree_rcu(sf_acts, rcu);
} }
static struct nlattr *reserve_sfa_size(struct sw_flow_actions **sfa, static struct nlattr *reserve_sfa_size(struct sw_flow_actions **sfa,
......
...@@ -155,13 +155,6 @@ static void rcu_free_flow_callback(struct rcu_head *rcu) ...@@ -155,13 +155,6 @@ static void rcu_free_flow_callback(struct rcu_head *rcu)
flow_free(flow); flow_free(flow);
} }
static void rcu_free_sw_flow_mask_cb(struct rcu_head *rcu)
{
struct sw_flow_mask *mask = container_of(rcu, struct sw_flow_mask, rcu);
kfree(mask);
}
static void flow_mask_del_ref(struct sw_flow_mask *mask, bool deferred) static void flow_mask_del_ref(struct sw_flow_mask *mask, bool deferred)
{ {
if (!mask) if (!mask)
...@@ -173,7 +166,7 @@ static void flow_mask_del_ref(struct sw_flow_mask *mask, bool deferred) ...@@ -173,7 +166,7 @@ static void flow_mask_del_ref(struct sw_flow_mask *mask, bool deferred)
if (!mask->ref_count) { if (!mask->ref_count) {
list_del_rcu(&mask->list); list_del_rcu(&mask->list);
if (deferred) if (deferred)
call_rcu(&mask->rcu, rcu_free_sw_flow_mask_cb); kfree_rcu(mask, rcu);
else else
kfree(mask); kfree(mask);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment