diff options
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) |