openvswitch: using kfree_rcu() to simplify the code
The callback function of call_rcu() just calls a kfree(), so we can use kfree_rcu() instead of call_rcu() + callback function. spatch with a semantic match is used to found this problem. (http://coccinelle.lip6.fr/) Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Acked-by: Jesse Gross <jesse@nicira.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
fc61b928dc
commit
80f0fd8a7f
@@ -427,19 +427,11 @@ void ovs_flow_deferred_free(struct sw_flow *flow)
|
|||||||
call_rcu(&flow->rcu, rcu_free_flow_callback);
|
call_rcu(&flow->rcu, rcu_free_flow_callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* RCU callback used by ovs_flow_deferred_free_acts. */
|
|
||||||
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_flow_deferred_free_acts(struct sw_flow_actions *sf_acts)
|
void ovs_flow_deferred_free_acts(struct sw_flow_actions *sf_acts)
|
||||||
{
|
{
|
||||||
call_rcu(&sf_acts->rcu, rcu_free_acts_callback);
|
kfree_rcu(sf_acts, rcu);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int parse_vlan(struct sk_buff *skb, struct sw_flow_key *key)
|
static int parse_vlan(struct sk_buff *skb, struct sw_flow_key *key)
|
||||||
|
|||||||
Reference in New Issue
Block a user