diff options
author | Lai Jiangshan <laijs@cn.fujitsu.com> | 2011-03-18 00:01:31 -0400 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2011-05-08 01:51:02 -0400 |
commit | f6f80238fab1ad19c44b4a12501528d50fc7fcd6 (patch) | |
tree | d40f2fb303dea12d632648e00d279712a8f57533 /net/core/net-sysfs.c | |
parent | e3cbf28fa61456bd2f0ba39846ffd905257eb4b0 (diff) |
net,rcu: convert call_rcu(rps_map_release) to kfree_rcu()
The rcu callback rps_map_release() just calls a kfree(),
so we use kfree_rcu() instead of the call_rcu(rps_map_release).
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Acked-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
Diffstat (limited to 'net/core/net-sysfs.c')
-rw-r--r-- | net/core/net-sysfs.c | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c index 5ceb257e860c..c410f2854c89 100644 --- a/net/core/net-sysfs.c +++ b/net/core/net-sysfs.c | |||
@@ -565,13 +565,6 @@ static ssize_t show_rps_map(struct netdev_rx_queue *queue, | |||
565 | return len; | 565 | return len; |
566 | } | 566 | } |
567 | 567 | ||
568 | static void rps_map_release(struct rcu_head *rcu) | ||
569 | { | ||
570 | struct rps_map *map = container_of(rcu, struct rps_map, rcu); | ||
571 | |||
572 | kfree(map); | ||
573 | } | ||
574 | |||
575 | static ssize_t store_rps_map(struct netdev_rx_queue *queue, | 568 | static ssize_t store_rps_map(struct netdev_rx_queue *queue, |
576 | struct rx_queue_attribute *attribute, | 569 | struct rx_queue_attribute *attribute, |
577 | const char *buf, size_t len) | 570 | const char *buf, size_t len) |
@@ -619,7 +612,7 @@ static ssize_t store_rps_map(struct netdev_rx_queue *queue, | |||
619 | spin_unlock(&rps_map_lock); | 612 | spin_unlock(&rps_map_lock); |
620 | 613 | ||
621 | if (old_map) | 614 | if (old_map) |
622 | call_rcu(&old_map->rcu, rps_map_release); | 615 | kfree_rcu(old_map, rcu); |
623 | 616 | ||
624 | free_cpumask_var(mask); | 617 | free_cpumask_var(mask); |
625 | return len; | 618 | return len; |
@@ -728,7 +721,7 @@ static void rx_queue_release(struct kobject *kobj) | |||
728 | map = rcu_dereference_raw(queue->rps_map); | 721 | map = rcu_dereference_raw(queue->rps_map); |
729 | if (map) { | 722 | if (map) { |
730 | RCU_INIT_POINTER(queue->rps_map, NULL); | 723 | RCU_INIT_POINTER(queue->rps_map, NULL); |
731 | call_rcu(&map->rcu, rps_map_release); | 724 | kfree_rcu(map, rcu); |
732 | } | 725 | } |
733 | 726 | ||
734 | flow_table = rcu_dereference_raw(queue->rps_flow_table); | 727 | flow_table = rcu_dereference_raw(queue->rps_flow_table); |