Loading net/ipv4/fib_trie.c +10 −11 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ * 2 of the License, or (at your option) any later version. */ #define VERSION "0.403" #define VERSION "0.404" #include <linux/config.h> #include <asm/uaccess.h> Loading Loading @@ -224,7 +224,7 @@ static inline int tkey_mismatch(t_key a, int offset, t_key b) Consider a node 'n' and its parent 'tp'. If n is a leaf, every bit in its key is significant. Its presence is necessitaded by path compression, since during a tree traversal (when necessitated by path compression, since during a tree traversal (when searching for a leaf - unless we are doing an insertion) we will completely ignore all skipped bits we encounter. Thus we need to verify, at the end of a potentially successful search, that we have indeed been walking the Loading Loading @@ -836,11 +836,12 @@ static void trie_init(struct trie *t) #endif } /* readside most use rcu_read_lock currently dump routines /* readside must use rcu_read_lock currently dump routines via get_fa_head and dump */ static struct leaf_info *find_leaf_info(struct hlist_head *head, int plen) static struct leaf_info *find_leaf_info(struct leaf *l, int plen) { struct hlist_head *head = &l->list; struct hlist_node *node; struct leaf_info *li; Loading @@ -853,7 +854,7 @@ static struct leaf_info *find_leaf_info(struct hlist_head *head, int plen) static inline struct list_head * get_fa_head(struct leaf *l, int plen) { struct leaf_info *li = find_leaf_info(&l->list, plen); struct leaf_info *li = find_leaf_info(l, plen); if (!li) return NULL; Loading Loading @@ -1248,7 +1249,7 @@ fn_trie_insert(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta, } /* should be clalled with rcu_read_lock */ /* should be called with rcu_read_lock */ static inline int check_leaf(struct trie *t, struct leaf *l, t_key key, int *plen, const struct flowi *flp, struct fib_result *res) Loading Loading @@ -1590,7 +1591,7 @@ fn_trie_delete(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta, rtmsg_fib(RTM_DELROUTE, htonl(key), fa, plen, tb->tb_id, nlhdr, req); l = fib_find_node(t, key); li = find_leaf_info(&l->list, plen); li = find_leaf_info(l, plen); list_del_rcu(&fa->fa_list); Loading Loading @@ -1714,7 +1715,6 @@ static int fn_trie_flush(struct fib_table *tb) t->revision++; rcu_read_lock(); for (h = 0; (l = nextleaf(t, l)) != NULL; h++) { found += trie_flush_leaf(t, l); Loading @@ -1722,7 +1722,6 @@ static int fn_trie_flush(struct fib_table *tb) trie_leaf_remove(t, ll->key); ll = l; } rcu_read_unlock(); if (ll && hlist_empty(&ll->list)) trie_leaf_remove(t, ll->key); Loading Loading @@ -2288,7 +2287,7 @@ static int fib_trie_seq_show(struct seq_file *seq, void *v) seq_indent(seq, iter->depth); seq_printf(seq, " |-- %d.%d.%d.%d\n", NIPQUAD(val)); for (i = 32; i >= 0; i--) { struct leaf_info *li = find_leaf_info(&l->list, i); struct leaf_info *li = find_leaf_info(l, i); if (li) { struct fib_alias *fa; list_for_each_entry_rcu(fa, &li->falh, fa_list) { Loading Loading @@ -2384,7 +2383,7 @@ static int fib_route_seq_show(struct seq_file *seq, void *v) return 0; for (i=32; i>=0; i--) { struct leaf_info *li = find_leaf_info(&l->list, i); struct leaf_info *li = find_leaf_info(l, i); struct fib_alias *fa; u32 mask, prefix; Loading Loading
net/ipv4/fib_trie.c +10 −11 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ * 2 of the License, or (at your option) any later version. */ #define VERSION "0.403" #define VERSION "0.404" #include <linux/config.h> #include <asm/uaccess.h> Loading Loading @@ -224,7 +224,7 @@ static inline int tkey_mismatch(t_key a, int offset, t_key b) Consider a node 'n' and its parent 'tp'. If n is a leaf, every bit in its key is significant. Its presence is necessitaded by path compression, since during a tree traversal (when necessitated by path compression, since during a tree traversal (when searching for a leaf - unless we are doing an insertion) we will completely ignore all skipped bits we encounter. Thus we need to verify, at the end of a potentially successful search, that we have indeed been walking the Loading Loading @@ -836,11 +836,12 @@ static void trie_init(struct trie *t) #endif } /* readside most use rcu_read_lock currently dump routines /* readside must use rcu_read_lock currently dump routines via get_fa_head and dump */ static struct leaf_info *find_leaf_info(struct hlist_head *head, int plen) static struct leaf_info *find_leaf_info(struct leaf *l, int plen) { struct hlist_head *head = &l->list; struct hlist_node *node; struct leaf_info *li; Loading @@ -853,7 +854,7 @@ static struct leaf_info *find_leaf_info(struct hlist_head *head, int plen) static inline struct list_head * get_fa_head(struct leaf *l, int plen) { struct leaf_info *li = find_leaf_info(&l->list, plen); struct leaf_info *li = find_leaf_info(l, plen); if (!li) return NULL; Loading Loading @@ -1248,7 +1249,7 @@ fn_trie_insert(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta, } /* should be clalled with rcu_read_lock */ /* should be called with rcu_read_lock */ static inline int check_leaf(struct trie *t, struct leaf *l, t_key key, int *plen, const struct flowi *flp, struct fib_result *res) Loading Loading @@ -1590,7 +1591,7 @@ fn_trie_delete(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta, rtmsg_fib(RTM_DELROUTE, htonl(key), fa, plen, tb->tb_id, nlhdr, req); l = fib_find_node(t, key); li = find_leaf_info(&l->list, plen); li = find_leaf_info(l, plen); list_del_rcu(&fa->fa_list); Loading Loading @@ -1714,7 +1715,6 @@ static int fn_trie_flush(struct fib_table *tb) t->revision++; rcu_read_lock(); for (h = 0; (l = nextleaf(t, l)) != NULL; h++) { found += trie_flush_leaf(t, l); Loading @@ -1722,7 +1722,6 @@ static int fn_trie_flush(struct fib_table *tb) trie_leaf_remove(t, ll->key); ll = l; } rcu_read_unlock(); if (ll && hlist_empty(&ll->list)) trie_leaf_remove(t, ll->key); Loading Loading @@ -2288,7 +2287,7 @@ static int fib_trie_seq_show(struct seq_file *seq, void *v) seq_indent(seq, iter->depth); seq_printf(seq, " |-- %d.%d.%d.%d\n", NIPQUAD(val)); for (i = 32; i >= 0; i--) { struct leaf_info *li = find_leaf_info(&l->list, i); struct leaf_info *li = find_leaf_info(l, i); if (li) { struct fib_alias *fa; list_for_each_entry_rcu(fa, &li->falh, fa_list) { Loading Loading @@ -2384,7 +2383,7 @@ static int fib_route_seq_show(struct seq_file *seq, void *v) return 0; for (i=32; i>=0; i--) { struct leaf_info *li = find_leaf_info(&l->list, i); struct leaf_info *li = find_leaf_info(l, i); struct fib_alias *fa; u32 mask, prefix; Loading