diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2006-09-19 16:42:46 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2006-09-19 16:42:46 -0400 |
commit | 888454c57a45511808d3fa52597b3d765df034a6 (patch) | |
tree | eaae5d36c181b03944dd7ebd0748016313ce89d9 /net | |
parent | b22b9004f22ba8ca33d15059e8b710a4b71ec3cc (diff) |
[IPV4] fib_trie: missing ntohl() when calling fib_semantic_match()
fib_trie.c::check_leaf() passes host-endian where fib_semantic_match()
expects (and stores into) net-endian.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv4/fib_trie.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c index 23fb9d9768e3..01801c0f885d 100644 --- a/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c | |||
@@ -1281,18 +1281,18 @@ static inline int check_leaf(struct trie *t, struct leaf *l, | |||
1281 | struct fib_result *res) | 1281 | struct fib_result *res) |
1282 | { | 1282 | { |
1283 | int err, i; | 1283 | int err, i; |
1284 | t_key mask; | 1284 | __be32 mask; |
1285 | struct leaf_info *li; | 1285 | struct leaf_info *li; |
1286 | struct hlist_head *hhead = &l->list; | 1286 | struct hlist_head *hhead = &l->list; |
1287 | struct hlist_node *node; | 1287 | struct hlist_node *node; |
1288 | 1288 | ||
1289 | hlist_for_each_entry_rcu(li, node, hhead, hlist) { | 1289 | hlist_for_each_entry_rcu(li, node, hhead, hlist) { |
1290 | i = li->plen; | 1290 | i = li->plen; |
1291 | mask = ntohl(inet_make_mask(i)); | 1291 | mask = inet_make_mask(i); |
1292 | if (l->key != (key & mask)) | 1292 | if (l->key != (key & ntohl(mask))) |
1293 | continue; | 1293 | continue; |
1294 | 1294 | ||
1295 | if ((err = fib_semantic_match(&li->falh, flp, res, l->key, mask, i)) <= 0) { | 1295 | if ((err = fib_semantic_match(&li->falh, flp, res, htonl(l->key), mask, i)) <= 0) { |
1296 | *plen = i; | 1296 | *plen = i; |
1297 | #ifdef CONFIG_IP_FIB_TRIE_STATS | 1297 | #ifdef CONFIG_IP_FIB_TRIE_STATS |
1298 | t->stats.semantic_match_passed++; | 1298 | t->stats.semantic_match_passed++; |