mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 15:32:33 +00:00
42 lines
1.5 KiB
Diff
42 lines
1.5 KiB
Diff
|
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);
|
||
|
}
|
||
|
}
|