b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame] | 1 | From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
| 2 | From: Wei Yongjun <weiyongjun1@huawei.com> |
| 3 | Date: Sun, 15 Dec 2019 22:08:04 +0100 |
| 4 | Subject: [PATCH] wireguard: allowedips: use kfree_rcu() instead of call_rcu() |
| 5 | |
| 6 | commit d89ee7d5c73af15c1c6f12b016cdf469742b5726 upstream. |
| 7 | |
| 8 | The callback function of call_rcu() just calls a kfree(), so we |
| 9 | can use kfree_rcu() instead of call_rcu() + callback function. |
| 10 | |
| 11 | Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com> |
| 12 | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> |
| 13 | Signed-off-by: David S. Miller <davem@davemloft.net> |
| 14 | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> |
| 15 | --- |
| 16 | drivers/net/wireguard/allowedips.c | 7 +------ |
| 17 | 1 file changed, 1 insertion(+), 6 deletions(-) |
| 18 | |
| 19 | --- a/drivers/net/wireguard/allowedips.c |
| 20 | +++ b/drivers/net/wireguard/allowedips.c |
| 21 | @@ -31,11 +31,6 @@ static void copy_and_assign_cidr(struct |
| 22 | #define CHOOSE_NODE(parent, key) \ |
| 23 | parent->bit[(key[parent->bit_at_a] >> parent->bit_at_b) & 1] |
| 24 | |
| 25 | -static void node_free_rcu(struct rcu_head *rcu) |
| 26 | -{ |
| 27 | - kfree(container_of(rcu, struct allowedips_node, rcu)); |
| 28 | -} |
| 29 | - |
| 30 | static void push_rcu(struct allowedips_node **stack, |
| 31 | struct allowedips_node __rcu *p, unsigned int *len) |
| 32 | { |
| 33 | @@ -112,7 +107,7 @@ static void walk_remove_by_peer(struct a |
| 34 | if (!node->bit[0] || !node->bit[1]) { |
| 35 | rcu_assign_pointer(*nptr, DEREF( |
| 36 | &node->bit[!REF(node->bit[0])])); |
| 37 | - call_rcu(&node->rcu, node_free_rcu); |
| 38 | + kfree_rcu(node, rcu); |
| 39 | node = DEREF(nptr); |
| 40 | } |
| 41 | } |