mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 16:29:59 +00:00
ipv4: fib_trie: Use tnode_get_child_rcu() and node_parent_rcu() in lookups
While looking for other fib_trie problems reported by Pawel Staszewski I noticed there are a few uses of tnode_get_child() and node_parent() in lookups instead of their rcu versions. Signed-off-by: Jarek Poplawski <jarkao2@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
be916cdebe
commit
b902e57352
1 changed files with 3 additions and 3 deletions
|
@ -1465,7 +1465,7 @@ static int fn_trie_lookup(struct fib_table *tb, const struct flowi *flp,
|
|||
cindex = tkey_extract_bits(mask_pfx(key, current_prefix_length),
|
||||
pos, bits);
|
||||
|
||||
n = tnode_get_child(pn, cindex);
|
||||
n = tnode_get_child_rcu(pn, cindex);
|
||||
|
||||
if (n == NULL) {
|
||||
#ifdef CONFIG_IP_FIB_TRIE_STATS
|
||||
|
@ -1600,7 +1600,7 @@ static int fn_trie_lookup(struct fib_table *tb, const struct flowi *flp,
|
|||
if (chopped_off <= pn->bits) {
|
||||
cindex &= ~(1 << (chopped_off-1));
|
||||
} else {
|
||||
struct tnode *parent = node_parent((struct node *) pn);
|
||||
struct tnode *parent = node_parent_rcu((struct node *) pn);
|
||||
if (!parent)
|
||||
goto failed;
|
||||
|
||||
|
@ -1813,7 +1813,7 @@ static struct leaf *trie_firstleaf(struct trie *t)
|
|||
static struct leaf *trie_nextleaf(struct leaf *l)
|
||||
{
|
||||
struct node *c = (struct node *) l;
|
||||
struct tnode *p = node_parent(c);
|
||||
struct tnode *p = node_parent_rcu(c);
|
||||
|
||||
if (!p)
|
||||
return NULL; /* trie with just one leaf */
|
||||
|
|
Loading…
Reference in a new issue