projects
/
urcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix reverse hash comparison
[urcu.git]
/
rculfhash.c
diff --git
a/rculfhash.c
b/rculfhash.c
index 450b286385ab2e00db0116e78326dbb6d0c74521..f1e6674bd7f1cc63f6eb09a0946904fc1dfc4f10 100644
(file)
--- a/
rculfhash.c
+++ b/
rculfhash.c
@@
-220,7
+220,7
@@
void _ht_add(struct rcu_ht *ht, struct rcu_table *t, struct rcu_ht_node *node)
iter = clear_flag(rcu_dereference(iter_prev->next));
if (unlikely(!iter))
break;
iter = clear_flag(rcu_dereference(iter_prev->next));
if (unlikely(!iter))
break;
- if (iter->reverse_hash
<
node->reverse_hash)
+ if (iter->reverse_hash
>
node->reverse_hash)
break;
iter_prev = iter;
check_resize(ht, t, ++chain_len);
break;
iter_prev = iter;
check_resize(ht, t, ++chain_len);
@@
-255,7
+255,7
@@
retry:
iter = clear_flag(rcu_dereference(iter_prev->next));
if (unlikely(!iter))
break;
iter = clear_flag(rcu_dereference(iter_prev->next));
if (unlikely(!iter))
break;
- if (
iter->reverse_hash < node->reverse_hash
)
+ if (
unlikely(iter->reverse_hash > node->reverse_hash)
)
break;
if (iter == node) {
found = 1;
break;
if (iter == node) {
found = 1;
@@
-355,12
+355,12
@@
struct rcu_ht_node *ht_lookup(struct rcu_ht *ht, void *key, size_t key_len)
for (;;) {
if (unlikely(!node))
break;
for (;;) {
if (unlikely(!node))
break;
- if (
node->reverse_hash > reverse_hash
) {
+ if (
unlikely(node->reverse_hash > reverse_hash)
) {
node = NULL;
break;
}
if (!ht->compare_fct(node->key, node->key_len, key, key_len)) {
node = NULL;
break;
}
if (!ht->compare_fct(node->key, node->key_len, key, key_len)) {
- if (
is_removed(rcu_dereference(node->next
)))
+ if (
unlikely(is_removed(rcu_dereference(node->next)
)))
node = NULL;
break;
}
node = NULL;
break;
}
This page took
0.02323 seconds
and
4
git commands to generate.