Same as __hlist_for_each_rcu but uses rcu_dereference_raw to suppress the warning from the update path (which is enforced by extra cond expression). Signed-off-by: Stanislav Fomichev <sdf@xxxxxxxxxx> --- include/linux/rculist.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/linux/rculist.h b/include/linux/rculist.h index d29740be4833..7b0a73139b21 100644 --- a/include/linux/rculist.h +++ b/include/linux/rculist.h @@ -690,6 +690,12 @@ static inline void hlist_add_behind_rcu(struct hlist_node *n, pos; \ pos = rcu_dereference(hlist_next_rcu(pos))) +#define hlist_for_each_rcu(pos, head, cond...) \ + for (__list_check_rcu(dummy, ## cond, 0), \ + pos = rcu_dereference_raw(hlist_first_rcu(head)); \ + pos; \ + pos = rcu_dereference_raw(hlist_next_rcu(pos))) + /** * hlist_for_each_entry_rcu - iterate over rcu list of given type * @pos: the type * to use as a loop cursor. -- 2.40.1.521.gf1e218fcd8-goog