mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-05 22:12:16 +00:00
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: Daniel Borkmann <dborkman@redhat.com> Signed-off-by: Jesse Gross <jesse@nicira.com>
This commit is contained in:
parent
e298e50570
commit
11d6c461b3
2 changed files with 2 additions and 17 deletions
|
@ -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)
|
||||||
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)
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue