diff options
| author | Wei Yongjun <yongjun_wei@trendmicro.com.cn> | 2012-08-26 14:20:45 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2012-08-31 15:55:38 -0400 |
| commit | 80f0fd8a7f18af78dd26bf94230e89c3ae82d4ba (patch) | |
| tree | c6ea2e22f54077651573a67391f3a6696315cf25 /net/openvswitch | |
| parent | fc61b928dc4d72176cf4bd4d30bf1d22e599aefc (diff) | |
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>
Diffstat (limited to 'net/openvswitch')
| -rw-r--r-- | net/openvswitch/flow.c | 10 |
1 files changed, 1 insertions, 9 deletions
diff --git a/net/openvswitch/flow.c b/net/openvswitch/flow.c index b7f38b161909..c7bf2f26525a 100644 --- a/net/openvswitch/flow.c +++ b/net/openvswitch/flow.c | |||
| @@ -427,19 +427,11 @@ void ovs_flow_deferred_free(struct sw_flow *flow) | |||
| 427 | call_rcu(&flow->rcu, rcu_free_flow_callback); | 427 | call_rcu(&flow->rcu, rcu_free_flow_callback); |
| 428 | } | 428 | } |
| 429 | 429 | ||
| 430 | /* RCU callback used by ovs_flow_deferred_free_acts. */ | ||
| 431 | static void rcu_free_acts_callback(struct rcu_head *rcu) | ||
| 432 | { | ||
| 433 | struct sw_flow_actions *sf_acts = container_of(rcu, | ||
| 434 | struct sw_flow_actions, rcu); | ||
| 435 | kfree(sf_acts); | ||
| 436 | } | ||
| 437 | |||
| 438 | /* Schedules 'sf_acts' to be freed after the next RCU grace period. | 430 | /* Schedules 'sf_acts' to be freed after the next RCU grace period. |
| 439 | * The caller must hold rcu_read_lock for this to be sensible. */ | 431 | * The caller must hold rcu_read_lock for this to be sensible. */ |
| 440 | void ovs_flow_deferred_free_acts(struct sw_flow_actions *sf_acts) | 432 | void ovs_flow_deferred_free_acts(struct sw_flow_actions *sf_acts) |
| 441 | { | 433 | { |
| 442 | call_rcu(&sf_acts->rcu, rcu_free_acts_callback); | 434 | kfree_rcu(sf_acts, rcu); |
| 443 | } | 435 | } |
| 444 | 436 | ||
| 445 | static int parse_vlan(struct sk_buff *skb, struct sw_flow_key *key) | 437 | static int parse_vlan(struct sk_buff *skb, struct sw_flow_key *key) |
