Some macros for rculist have no users and there are no unit tests
specific to that library as well, so broken code wasn't spotted
while updating to multi-variable iterators.

Fixing multiple problems like missing commas, parenthesis, incorrect
variable and macro names.

Fixes: d293965d7b06 ("rculist: use multi-variable helpers for loop macros.")
Reported-by: Subrata Nath <subrata.n...@nokia.com>
Co-authored-by: Dumitru Ceara <dce...@redhat.com>
Signed-off-by: Dumitru Ceara <dce...@redhat.com>
Signed-off-by: Ilya Maximets <i.maxim...@ovn.org>
---
 lib/rculist.h | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/lib/rculist.h b/lib/rculist.h
index c0d77acf9..9bb8cbf3e 100644
--- a/lib/rculist.h
+++ b/lib/rculist.h
@@ -380,18 +380,18 @@ rculist_is_singleton_protected(const struct rculist *list)
 #define RCULIST_FOR_EACH_REVERSE_PROTECTED(ITER, MEMBER, RCULIST)             \
     for (INIT_MULTIVAR(ITER, MEMBER, (RCULIST)->prev, struct rculist);        \
          CONDITION_MULTIVAR(ITER, MEMBER, ITER_VAR(ITER) != (RCULIST));       \
-         UPDATE_MULTIVAR(ITER, ITER_VAR(VAR).prev))
+         UPDATE_MULTIVAR(ITER, ITER_VAR(ITER)->prev))
 
 #define RCULIST_FOR_EACH_REVERSE_PROTECTED_CONTINUE(ITER, MEMBER, RCULIST)    \
     for (INIT_MULTIVAR(ITER, MEMBER, (ITER)->MEMBER.prev, struct rculist);    \
          CONDITION_MULTIVAR(ITER, MEMBER, ITER_VAR(ITER) != (RCULIST));       \
-         UPDATE_MULTIVAR(ITER, ITER_VAR(VAR).prev))
+         UPDATE_MULTIVAR(ITER, ITER_VAR(ITER)->prev))
 
 #define RCULIST_FOR_EACH_PROTECTED(ITER, MEMBER, RCULIST)                     \
     for (INIT_MULTIVAR(ITER, MEMBER, rculist_next_protected(RCULIST),         \
                        struct rculist);                                       \
          CONDITION_MULTIVAR(ITER, MEMBER, ITER_VAR(ITER) != (RCULIST));       \
-         UPDATE_MULTIVAR(ITER, rculist_next_protected(ITER_VAR(ITER)))        \
+         UPDATE_MULTIVAR(ITER, rculist_next_protected(ITER_VAR(ITER))))       \
 
 #define RCULIST_FOR_EACH_SAFE_SHORT_PROTECTED(ITER, MEMBER, RCULIST)          \
     for (INIT_MULTIVAR_SAFE_SHORT(ITER, MEMBER,                               \
@@ -399,18 +399,18 @@ rculist_is_singleton_protected(const struct rculist *list)
                                   struct rculist);                            \
          CONDITION_MULTIVAR_SAFE_SHORT(ITER, MEMBER,                          \
                                        ITER_VAR(ITER) != (RCULIST),           \
-             ITER_NEXT_VAR(ITER) = rculist_next_protected(ITER_VAR(VAR)));    \
-        UPDATE_MULTIVAR_SHORT(ITER))
+             ITER_NEXT_VAR(ITER) = rculist_next_protected(ITER_VAR(ITER)));   \
+        UPDATE_MULTIVAR_SAFE_SHORT(ITER))
 
 #define RCULIST_FOR_EACH_SAFE_LONG_PROTECTED(ITER, NEXT, MEMBER, RCULIST)     \
     for (INIT_MULTIVAR_SAFE_LONG(ITER, NEXT, MEMBER,                          \
-                                 rculist_next_protected(RCULIST)              \
+                                 rculist_next_protected(RCULIST),             \
                                  struct rculist);                             \
-         CONDITION_MULTIVAR_SAFE_LONG(VAR, NEXT, MEMBER                       \
+         CONDITION_MULTIVAR_SAFE_LONG(ITER, NEXT, MEMBER,                     \
                                       ITER_VAR(ITER) != (RCULIST),            \
-             ITER_VAR(NEXT) = rculist_next_protected(ITER_VAR(VAR)),          \
+             ITER_VAR(NEXT) = rculist_next_protected(ITER_VAR(ITER)),         \
                                       ITER_VAR(NEXT) != (RCULIST));           \
-        UPDATE_MULTIVAR_LONG(ITER))
+        UPDATE_MULTIVAR_SAFE_LONG(ITER, NEXT))
 
 #define RCULIST_FOR_EACH_SAFE_PROTECTED(...)                                  \
     OVERLOAD_SAFE_MACRO(RCULIST_FOR_EACH_SAFE_LONG_PROTECTED,                 \
-- 
2.37.3

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to