| From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
| From: Wei Yongjun <weiyongjun1@huawei.com> |
| Date: Sun, 15 Dec 2019 22:08:04 +0100 |
| Subject: [PATCH] wireguard: allowedips: use kfree_rcu() instead of call_rcu() |
| |
| commit d89ee7d5c73af15c1c6f12b016cdf469742b5726 upstream. |
| |
| 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: Jason A. Donenfeld <Jason@zx2c4.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> |
| --- |
| drivers/net/wireguard/allowedips.c | 7 +------ |
| 1 file changed, 1 insertion(+), 6 deletions(-) |
| |
| --- a/drivers/net/wireguard/allowedips.c |
| +++ b/drivers/net/wireguard/allowedips.c |
| @@ -31,11 +31,6 @@ static void copy_and_assign_cidr(struct |
| #define CHOOSE_NODE(parent, key) \ |
| parent->bit[(key[parent->bit_at_a] >> parent->bit_at_b) & 1] |
| |
| -static void node_free_rcu(struct rcu_head *rcu) |
| -{ |
| - kfree(container_of(rcu, struct allowedips_node, rcu)); |
| -} |
| - |
| static void push_rcu(struct allowedips_node **stack, |
| struct allowedips_node __rcu *p, unsigned int *len) |
| { |
| @@ -112,7 +107,7 @@ static void walk_remove_by_peer(struct a |
| if (!node->bit[0] || !node->bit[1]) { |
| rcu_assign_pointer(*nptr, DEREF( |
| &node->bit[!REF(node->bit[0])])); |
| - call_rcu(&node->rcu, node_free_rcu); |
| + kfree_rcu(node, rcu); |
| node = DEREF(nptr); |
| } |
| } |