diff options
author | Wei Yongjun <weiyongjun1@huawei.com> | 2016-08-22 19:01:29 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-08-23 20:00:26 -0400 |
commit | 1345b1ac57a1b85d73912bd13c2bad5f9f26df91 (patch) | |
tree | 86c2a0411c27cb71e54e8fe0e49d523dfc1362f4 | |
parent | c41419b091f371d846bc5292c9138a78b7e378fe (diff) |
xen-netback: 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.
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/xen-netback/hash.c | 13 |
1 files changed, 2 insertions, 11 deletions
diff --git a/drivers/net/xen-netback/hash.c b/drivers/net/xen-netback/hash.c index 282b16d8093a..e8c5dddc54ba 100644 --- a/drivers/net/xen-netback/hash.c +++ b/drivers/net/xen-netback/hash.c | |||
@@ -32,15 +32,6 @@ | |||
32 | #include <linux/vmalloc.h> | 32 | #include <linux/vmalloc.h> |
33 | #include <linux/rculist.h> | 33 | #include <linux/rculist.h> |
34 | 34 | ||
35 | static void xenvif_del_hash(struct rcu_head *rcu) | ||
36 | { | ||
37 | struct xenvif_hash_cache_entry *entry; | ||
38 | |||
39 | entry = container_of(rcu, struct xenvif_hash_cache_entry, rcu); | ||
40 | |||
41 | kfree(entry); | ||
42 | } | ||
43 | |||
44 | static void xenvif_add_hash(struct xenvif *vif, const u8 *tag, | 35 | static void xenvif_add_hash(struct xenvif *vif, const u8 *tag, |
45 | unsigned int len, u32 val) | 36 | unsigned int len, u32 val) |
46 | { | 37 | { |
@@ -76,7 +67,7 @@ static void xenvif_add_hash(struct xenvif *vif, const u8 *tag, | |||
76 | if (++vif->hash.cache.count > xenvif_hash_cache_size) { | 67 | if (++vif->hash.cache.count > xenvif_hash_cache_size) { |
77 | list_del_rcu(&oldest->link); | 68 | list_del_rcu(&oldest->link); |
78 | vif->hash.cache.count--; | 69 | vif->hash.cache.count--; |
79 | call_rcu(&oldest->rcu, xenvif_del_hash); | 70 | kfree_rcu(oldest, rcu); |
80 | } | 71 | } |
81 | } | 72 | } |
82 | 73 | ||
@@ -114,7 +105,7 @@ static void xenvif_flush_hash(struct xenvif *vif) | |||
114 | list_for_each_entry_rcu(entry, &vif->hash.cache.list, link) { | 105 | list_for_each_entry_rcu(entry, &vif->hash.cache.list, link) { |
115 | list_del_rcu(&entry->link); | 106 | list_del_rcu(&entry->link); |
116 | vif->hash.cache.count--; | 107 | vif->hash.cache.count--; |
117 | call_rcu(&entry->rcu, xenvif_del_hash); | 108 | kfree_rcu(entry, rcu); |
118 | } | 109 | } |
119 | 110 | ||
120 | spin_unlock_irqrestore(&vif->hash.cache.lock, flags); | 111 | spin_unlock_irqrestore(&vif->hash.cache.lock, flags); |