projects
/
userspace-rcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: hlist iteration relies on undefined behavior
[userspace-rcu.git]
/
include
/
urcu
/
rcuhlist.h
diff --git
a/include/urcu/rcuhlist.h
b/include/urcu/rcuhlist.h
index 69c4d3184fd50d7f38a730e17447678f5fec3991..ca1da068b1fa6fdbe95db84dae922fc44e66bf84 100644
(file)
--- a/
include/urcu/rcuhlist.h
+++ b/
include/urcu/rcuhlist.h
@@
-72,10
+72,10
@@
void cds_hlist_del_rcu(struct cds_hlist_node *elem)
entry = cds_hlist_entry(pos, __typeof__(*entry), member))
#define cds_hlist_for_each_entry_rcu_2(entry, head, member) \
entry = cds_hlist_entry(pos, __typeof__(*entry), member))
#define cds_hlist_for_each_entry_rcu_2(entry, head, member) \
- for (entry = cds_hlist_entry(rcu_dereference((head)->next), \
+ for (entry = cds_hlist_entry
_safe
(rcu_dereference((head)->next), \
__typeof__(*entry), member); \
__typeof__(*entry), member); \
-
&entry->member
!= NULL; \
- entry = cds_hlist_entry(rcu_dereference(entry->member.next), \
+
entry
!= NULL; \
+ entry = cds_hlist_entry
_safe
(rcu_dereference(entry->member.next), \
__typeof__(*entry), member))
#endif /* _URCU_RCUHLIST_H */
__typeof__(*entry), member))
#endif /* _URCU_RCUHLIST_H */
This page took
0.022962 seconds
and
4
git commands to generate.