Просмотр исходного кода

list: Replace for_each by safe version where need

Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
Jan Friesse 9 лет назад
Родитель
Сommit
1f90c31ba7
12 измененных файлов с 95 добавлено и 93 удалено
  1. 1 1
      exec/cfg.c
  2. 4 4
      exec/coroparse.c
  3. 53 54
      exec/cpg.c
  4. 11 9
      exec/icmap.c
  5. 4 4
      exec/ipc_glue.c
  6. 1 1
      exec/totemconfig.c
  7. 3 3
      exec/totemip.c
  8. 5 5
      exec/totempg.c
  9. 2 2
      exec/totemsrp.c
  10. 4 4
      exec/totemudpu.c
  11. 5 4
      exec/vsf_quorum.c
  12. 2 2
      lib/cpg.c

+ 1 - 1
exec/cfg.c

@@ -916,7 +916,7 @@ static void message_handler_req_lib_cfg_tryshutdown (
 	 */
 	shutdown_expected = 0;
 
-        qb_list_for_each(iter, &trackers_list) {
+	qb_list_for_each(iter, &trackers_list) {
 		struct cfg_info *testci = qb_list_entry(iter, struct cfg_info, list);
 		/*
 		 * It is assumed that we will allow shutdown

+ 4 - 4
exec/coroparse.c

@@ -514,7 +514,7 @@ static int main_config_parser_cb(const char *path,
 	static char formated_err[256];
 	struct main_cp_cb_data *data = (struct main_cp_cb_data *)user_data;
 	struct key_value_list_item *kv_item;
-        struct qb_list_head *iter;
+	struct qb_list_head *iter, *tmp_iter;
 	int uid, gid;
 
 	switch (type) {
@@ -1068,7 +1068,7 @@ static int main_config_parser_cb(const char *path,
 
 			ii = 0;
 
-                        qb_list_for_each(iter, &(data->member_items_head)) {
+			qb_list_for_each_safe(iter, tmp_iter, &(data->member_items_head)) {
 				kv_item = qb_list_entry(iter, struct key_value_list_item, list);
 
 				snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "totem.interface.%u.member.%u",
@@ -1089,7 +1089,7 @@ static int main_config_parser_cb(const char *path,
 				return (0);
 			}
 
-                        qb_list_for_each(iter, &(data->logger_subsys_items_head)) {
+			qb_list_for_each_safe(iter, tmp_iter, &(data->logger_subsys_items_head)) {
 				kv_item = qb_list_entry(iter, struct key_value_list_item, list);
 
 				snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "logging.logger_subsys.%s.%s",
@@ -1115,7 +1115,7 @@ static int main_config_parser_cb(const char *path,
 				return (0);
 			}
 
-                        qb_list_for_each(iter, &(data->logger_subsys_items_head)) {
+			qb_list_for_each_safe(iter, tmp_iter, &(data->logger_subsys_items_head)) {
 				kv_item = qb_list_entry(iter, struct key_value_list_item, list);
 
 				if (data->subsys == NULL) {

+ 53 - 54
exec/cpg.c

@@ -660,7 +660,7 @@ static int notify_lib_totem_membership (
 	memcpy (res->member_list, member_list, res->member_list_entries * sizeof (mar_uint32_t));
 
 	if (conn == NULL) {
-                qb_list_for_each(iter, &cpg_pd_list_head) {
+		qb_list_for_each(iter, &cpg_pd_list_head) {
 			struct cpg_pd *cpg_pd = qb_list_entry (iter, struct cpg_pd, list);
 			api->ipc_dispatch_send (cpg_pd->conn, buf, size);
 		}
@@ -689,7 +689,7 @@ static int notify_lib_joinlist(
 
 	count = 0;
 
-        qb_list_for_each(iter, &process_info_list_head) {
+	qb_list_for_each(iter, &process_info_list_head) {
 		struct process_info *pi = qb_list_entry (iter, struct process_info, list);
 		if (mar_name_compare (&pi->group, group_name) == 0) {
 			int i;
@@ -722,7 +722,7 @@ static int notify_lib_joinlist(
 	res->header.error = CS_OK;
 	memcpy(&res->group_name, group_name, sizeof(mar_cpg_name_t));
 
-        qb_list_for_each(iter, &process_info_list_head) {
+	qb_list_for_each(iter, &process_info_list_head) {
 		struct process_info *pi=qb_list_entry (iter, struct process_info, list);
 
 		if (mar_name_compare (&pi->group, group_name) == 0) {
@@ -756,7 +756,7 @@ static int notify_lib_joinlist(
 	if (conn) {
 		api->ipc_dispatch_send (conn, buf, size);
 	} else {
-                qb_list_for_each(iter, &cpg_pd_list_head) {
+	qb_list_for_each(iter, &cpg_pd_list_head) {
 			struct cpg_pd *cpd = qb_list_entry (iter, struct cpg_pd, list);
 			if (mar_name_compare (&cpd->group_name, group_name) == 0) {
 				assert (joined_list_entries <= 1);
@@ -790,7 +790,7 @@ static int notify_lib_joinlist(
 	/*
 	 * Traverse thru cpds and send totem membership for cpd, where it is not send yet
 	 */
-        qb_list_for_each(iter, &cpg_pd_list_head) {
+	qb_list_for_each(iter, &cpg_pd_list_head) {
 		struct cpg_pd *cpd = qb_list_entry (iter, struct cpg_pd, list);
 
 		if ((cpd->flags & CPG_MODEL_V1_DELIVER_INITIAL_TOTEM_CONF) && (cpd->initial_totem_conf_sent == 0)) {
@@ -823,7 +823,7 @@ static struct downlist_msg* downlist_master_choose (void)
 	uint32_t i;
 	int ignore_msg;
 
-        qb_list_for_each(iter, &downlist_messages_head) {
+	qb_list_for_each(iter, &downlist_messages_head) {
 		cmp = qb_list_entry(iter, struct downlist_msg, list);
 		downlist_log("comparing", cmp);
 
@@ -870,7 +870,7 @@ static struct downlist_msg* downlist_master_choose (void)
 static void downlist_master_choose_and_send (void)
 {
 	struct downlist_msg *stored_msg;
-	struct qb_list_head *iter;
+	struct qb_list_head *iter, *tmp_iter;
 	struct process_info *left_pi;
 	qb_map_t *group_map;
 	struct cpg_name cpg_group;
@@ -900,8 +900,8 @@ static void downlist_master_choose_and_send (void)
 	 * confchg event, so we will collect these cpg groups and
 	 * relative left_lists here.
 	 */
-        qb_list_for_each(iter, &process_info_list_head) {
-                struct process_info *pi = qb_list_entry(iter, struct process_info, list);
+	qb_list_for_each_safe(iter, tmp_iter, &process_info_list_head) {
+		struct process_info *pi = qb_list_entry(iter, struct process_info, list);
 
 		left_pi = NULL;
 		for (i = 0; i < stored_msg->left_nodes; i++) {
@@ -963,14 +963,14 @@ static void downlist_master_choose_and_send (void)
  */
 static void joinlist_remove_zombie_pi_entries (void)
 {
-	struct qb_list_head *pi_iter;
+	struct qb_list_head *pi_iter, *tmp_iter;
 	struct qb_list_head *jl_iter;
 	struct process_info *pi;
 	struct joinlist_msg *stored_msg;
 	int found;
 
-        qb_list_for_each(pi_iter, &process_info_list_head) {
-                pi = qb_list_entry (pi_iter, struct process_info, list);
+	qb_list_for_each_safe(pi_iter, tmp_iter, &process_info_list_head) {
+		pi = qb_list_entry (pi_iter, struct process_info, list);
 
 		/*
 		 * Ignore local node
@@ -983,7 +983,7 @@ static void joinlist_remove_zombie_pi_entries (void)
 		 * Try to find message in joinlist messages
 		 */
 		found = 0;
-                qb_list_for_each(jl_iter, &joinlist_messages_head) {
+		qb_list_for_each(jl_iter, &joinlist_messages_head) {
 			stored_msg = qb_list_entry(jl_iter, struct joinlist_msg, list);
 
 			if (stored_msg->sender_nodeid == api->totem_nodeid_get()) {
@@ -1011,7 +1011,7 @@ static void joinlist_inform_clients (void)
 	unsigned int i;
 
 	i = 0;
-        qb_list_for_each(iter, &joinlist_messages_head) {
+	qb_list_for_each(iter, &joinlist_messages_head) {
 		stored_msg = qb_list_entry(iter, struct joinlist_msg, list);
 
 		log_printf (LOG_DEBUG, "joinlist_messages[%u] group:%s, ip:%s, pid:%d",
@@ -1034,9 +1034,9 @@ static void joinlist_inform_clients (void)
 static void downlist_messages_delete (void)
 {
 	struct downlist_msg *stored_msg;
-        struct qb_list_head *iter;
+        struct qb_list_head *iter, *tmp_iter;
 
-        qb_list_for_each(iter, &downlist_messages_head) {
+	qb_list_for_each_safe(iter, tmp_iter, &downlist_messages_head) {
 		stored_msg = qb_list_entry(iter, struct downlist_msg, list);
 		qb_list_del (&stored_msg->list);
 		free (stored_msg);
@@ -1046,9 +1046,9 @@ static void downlist_messages_delete (void)
 static void joinlist_messages_delete (void)
 {
 	struct joinlist_msg *stored_msg;
-        struct qb_list_head *iter;
+	struct qb_list_head *iter, *tmp_iter;
 
-        qb_list_for_each(iter, &joinlist_messages_head) {
+	qb_list_for_each_safe(iter, tmp_iter, &joinlist_messages_head) {
 		stored_msg = qb_list_entry(iter, struct joinlist_msg, list);
 		qb_list_del (&stored_msg->list);
 		free (stored_msg);
@@ -1066,10 +1066,10 @@ static char *cpg_exec_init_fn (struct corosync_api_v1 *corosync_api)
 
 static void cpg_iteration_instance_finalize (struct cpg_iteration_instance *cpg_iteration_instance)
 {
-        struct qb_list_head *iter;
+	struct qb_list_head *iter, *tmp_iter;
 	struct process_info *pi;
 
-        qb_list_for_each(iter, &(cpg_iteration_instance->items_list_head)) {
+	qb_list_for_each_safe(iter, tmp_iter, &(cpg_iteration_instance->items_list_head)) {
 		pi = qb_list_entry (iter, struct process_info, list);
 		qb_list_del (&pi->list);
 		free (pi);
@@ -1081,11 +1081,11 @@ static void cpg_iteration_instance_finalize (struct cpg_iteration_instance *cpg_
 
 static void cpg_pd_finalize (struct cpg_pd *cpd)
 {
-        struct qb_list_head *iter;
+	struct qb_list_head *iter, *tmp_iter;
 	struct cpg_iteration_instance *cpii;
 
-        zcb_all_free(cpd);
-        qb_list_for_each(iter, &(cpd->iteration_instance_list_head)) {
+	zcb_all_free(cpd);
+	qb_list_for_each_safe(iter, tmp_iter, &(cpd->iteration_instance_list_head)) {
 		cpii = qb_list_entry (iter, struct cpg_iteration_instance, list);
 
 		cpg_iteration_instance_finalize (cpii);
@@ -1202,8 +1202,9 @@ static void exec_cpg_partial_mcast_endian_convert (void *msg)
 static struct process_info *process_info_find(const mar_cpg_name_t *group_name, uint32_t pid, unsigned int nodeid) {
 	struct qb_list_head *iter;
 
-        qb_list_for_each(iter, &process_info_list_head) {
-                struct process_info *pi = qb_list_entry (iter, struct process_info, list);
+	qb_list_for_each(iter, &process_info_list_head) {
+		struct process_info *pi = qb_list_entry (iter, struct process_info, list);
+
 		if (pi->pid == pid && pi->nodeid == nodeid &&
 			mar_name_compare (&pi->group, group_name) == 0) {
 				return pi;
@@ -1242,7 +1243,7 @@ static void do_proc_join(
 	 * Insert new process in sorted order so synchronization works properly
 	 */
 	list_to_add = &process_info_list_head;
-        qb_list_for_each(list, &process_info_list_head) {
+	qb_list_for_each(list, &process_info_list_head) {
 		pi_entry = qb_list_entry(list, struct process_info, list);
 		if (pi_entry->nodeid > pi->nodeid ||
 			(pi_entry->nodeid == pi->nodeid && pi_entry->pid > pi->pid)) {
@@ -1270,7 +1271,7 @@ static void do_proc_leave(
 	int reason)
 {
 	struct process_info *pi;
-	struct qb_list_head *iter;
+	struct qb_list_head *iter, *tmp_iter;
 	mar_cpg_address_t notify_info;
 
 	notify_info.pid = pid;
@@ -1282,9 +1283,8 @@ static void do_proc_leave(
 		1, &notify_info,
 		MESSAGE_RES_CPG_CONFCHG_CALLBACK);
 
-        qb_list_for_each(iter, &process_info_list_head) {
+	qb_list_for_each_safe(iter, tmp_iter, &process_info_list_head) {
 		pi = qb_list_entry(iter, struct process_info, list);
-		iter = iter->next;
 
 		if (pi->pid == pid && pi->nodeid == nodeid &&
 			mar_name_compare (&pi->group, name)==0) {
@@ -1329,9 +1329,9 @@ static void message_handler_req_exec_cpg_downlist(
 
 	for (i = 0; i < my_member_list_entries; i++) {
 		found = 0;
-                qb_list_for_each(iter, &downlist_messages_head) {
-
+		qb_list_for_each(iter, &downlist_messages_head) {
 			stored_msg = qb_list_entry(iter, struct downlist_msg, list);
+
 			if (my_member_list[i] == stored_msg->sender_nodeid) {
 				found = 1;
 			}
@@ -1410,7 +1410,7 @@ static void message_handler_req_exec_cpg_mcast (
 	const struct req_exec_cpg_mcast *req_exec_cpg_mcast = message;
 	struct res_lib_cpg_deliver_callback res_lib_cpg_mcast;
 	int msglen = req_exec_cpg_mcast->msglen;
-	struct qb_list_head *iter, *pi_iter;
+	struct qb_list_head *iter, *pi_iter, *tmp_iter;
 	struct cpg_pd *cpd;
 	struct iovec iovec[2];
 	int known_node = 0;
@@ -1429,14 +1429,14 @@ static void message_handler_req_exec_cpg_mcast (
 	iovec[1].iov_base = (char*)message+sizeof(*req_exec_cpg_mcast);
 	iovec[1].iov_len = msglen;
 
-        qb_list_for_each(iter, &cpg_pd_list_head) {
+	qb_list_for_each_safe(iter, tmp_iter, &cpg_pd_list_head) {
 		cpd = qb_list_entry(iter, struct cpg_pd, list);
 		if ((cpd->cpd_state == CPD_STATE_LEAVE_STARTED || cpd->cpd_state == CPD_STATE_JOIN_COMPLETED)
 			&& (mar_name_compare (&cpd->group_name, &req_exec_cpg_mcast->group_name) == 0)) {
 
 			if (!known_node) {
 				/* Try to find, if we know the node */
-                                qb_list_for_each(pi_iter, &process_info_list_head) {
+				qb_list_for_each(pi_iter, &process_info_list_head) {
 					struct process_info *pi = qb_list_entry (pi_iter, struct process_info, list);
 
 					if (pi->nodeid == nodeid &&
@@ -1464,7 +1464,7 @@ static void message_handler_req_exec_cpg_partial_mcast (
 	const struct req_exec_cpg_partial_mcast *req_exec_cpg_mcast = message;
 	struct res_lib_cpg_partial_deliver_callback res_lib_cpg_mcast;
 	int msglen = req_exec_cpg_mcast->fraglen;
-	struct qb_list_head *iter, *pi_iter;
+	struct qb_list_head *iter, *pi_iter, *tmp_iter;
 	struct cpg_pd *cpd;
 	struct iovec iovec[2];
 	int known_node = 0;
@@ -1487,14 +1487,15 @@ static void message_handler_req_exec_cpg_partial_mcast (
 	iovec[1].iov_base = (char*)message+sizeof(*req_exec_cpg_mcast);
 	iovec[1].iov_len = msglen;
 
-        qb_list_for_each(iter, &cpg_pd_list_head) {
-                cpd = qb_list_entry(iter, struct cpg_pd, list);
+	qb_list_for_each_safe(iter, tmp_iter, &cpg_pd_list_head) {
+		cpd = qb_list_entry(iter, struct cpg_pd, list);
+
 		if ((cpd->cpd_state == CPD_STATE_LEAVE_STARTED || cpd->cpd_state == CPD_STATE_JOIN_COMPLETED)
 		    && (mar_name_compare (&cpd->group_name, &req_exec_cpg_mcast->group_name) == 0)) {
 
 			if (!known_node) {
 				/* Try to find, if we know the node */
-                                qb_list_for_each(pi_iter, &process_info_list_head) {
+				qb_list_for_each(pi_iter, &process_info_list_head) {
 					struct process_info *pi = qb_list_entry (pi_iter, struct process_info, list);
 
 					if (pi->nodeid == nodeid &&
@@ -1540,7 +1541,7 @@ static int cpg_exec_send_joinlist(void)
 	struct join_list_entry *jle;
 	struct iovec req_exec_cpg_iovec;
 
-        qb_list_for_each(iter, &process_info_list_head) {
+	qb_list_for_each(iter, &process_info_list_head) {
 		struct process_info *pi = qb_list_entry (iter, struct process_info, list);
 
  		if (pi->nodeid == api->totem_nodeid_get ()) {
@@ -1561,7 +1562,7 @@ static int cpg_exec_send_joinlist(void)
 	jle = (struct join_list_entry *)(buf + sizeof(struct qb_ipc_response_header));
 	res = (struct qb_ipc_response_header *)buf;
 
-        qb_list_for_each(iter, &process_info_list_head) {
+	qb_list_for_each(iter, &process_info_list_head) {
 		struct process_info *pi = qb_list_entry (iter, struct process_info, list);
 
 		if (pi->nodeid == api->totem_nodeid_get ()) {
@@ -1605,7 +1606,7 @@ static void message_handler_req_lib_cpg_join (void *conn, const void *message)
 	struct qb_list_head *iter;
 
 	/* Test, if we don't have same pid and group name joined */
-        qb_list_for_each(iter, &cpg_pd_list_head) {
+	qb_list_for_each(iter, &cpg_pd_list_head) {
 		struct cpg_pd *cpd_item = qb_list_entry (iter, struct cpg_pd, list);
 
 		if (cpd_item->pid == req_lib_cpg_join->pid &&
@@ -1621,7 +1622,7 @@ static void message_handler_req_lib_cpg_join (void *conn, const void *message)
 	 * Same check must be done in process info list, because there may be not yet delivered
 	 * leave of client.
 	 */
-        qb_list_for_each(iter, &process_info_list_head) {
+	qb_list_for_each(iter, &process_info_list_head) {
 		struct process_info *pi = qb_list_entry (iter, struct process_info, list);
 
 		if (pi->nodeid == api->totem_nodeid_get () && pi->pid == req_lib_cpg_join->pid &&
@@ -1821,11 +1822,11 @@ static inline int zcb_free (struct zcb_mapped *zcb_mapped)
 
 static inline int zcb_by_addr_free (struct cpg_pd *cpd, void *addr)
 {
-	struct qb_list_head *list;
+	struct qb_list_head *list, *tmp_iter;
 	struct zcb_mapped *zcb_mapped;
 	unsigned int res = 0;
 
-        qb_list_for_each(list, &(cpd->zcb_mapped_list_head)) {
+	qb_list_for_each_safe(list, tmp_iter, &(cpd->zcb_mapped_list_head)) {
 		zcb_mapped = qb_list_entry (list, struct zcb_mapped, list);
 
 		if (zcb_mapped->addr == addr) {
@@ -1840,14 +1841,12 @@ static inline int zcb_by_addr_free (struct cpg_pd *cpd, void *addr)
 static inline int zcb_all_free (
 	struct cpg_pd *cpd)
 {
-	struct qb_list_head *list;
+	struct qb_list_head *list, *tmp_iter;
 	struct zcb_mapped *zcb_mapped;
 
-        qb_list_for_each(list, &(cpd->zcb_mapped_list_head)) {
+	qb_list_for_each_safe(list, tmp_iter, &(cpd->zcb_mapped_list_head)) {
 		zcb_mapped = qb_list_entry (list, struct zcb_mapped, list);
 
-		list = list->next;
-
 		zcb_free (zcb_mapped);
 	}
 	return (0);
@@ -2127,7 +2126,7 @@ static void message_handler_req_lib_cpg_membership (void *conn,
 	res_lib_cpg_membership_get.header.size =
 		sizeof (struct res_lib_cpg_membership_get);
 
-        qb_list_for_each(iter, &process_info_list_head) {
+	qb_list_for_each(iter, &process_info_list_head) {
 		struct process_info *pi = qb_list_entry (iter, struct process_info, list);
 		if (mar_name_compare (&pi->group, &req_lib_cpg_membership_get->group_name) == 0) {
 			res_lib_cpg_membership_get.member_list[member_count].nodeid = pi->nodeid;
@@ -2198,7 +2197,7 @@ static void message_handler_req_lib_cpg_iteration_initialize (
 	/*
 	 * Create copy of process_info list "grouped by" group name
 	 */
-        qb_list_for_each(iter, &process_info_list_head) {
+	qb_list_for_each(iter, &process_info_list_head) {
 		struct process_info *pi = qb_list_entry (iter, struct process_info, list);
 		struct process_info *new_pi;
 
@@ -2256,12 +2255,12 @@ static void message_handler_req_lib_cpg_iteration_initialize (
 		/*
 		 * We will return list "grouped" by "group name", so try to find right place to add
 		 */
-                qb_list_for_each(iter2, &(cpg_iteration_instance->items_list_head)) {
-			 struct process_info *pi2 = qb_list_entry (iter2, struct process_info, list);
+		qb_list_for_each(iter2, &(cpg_iteration_instance->items_list_head)) {
+			struct process_info *pi2 = qb_list_entry (iter2, struct process_info, list);
 
-			 if (mar_name_compare (&pi2->group, &pi->group) == 0) {
+			if (mar_name_compare (&pi2->group, &pi->group) == 0) {
 				break;
-			 }
+			}
 		}
 
 		qb_list_add (&new_pi->list, iter2);

+ 11 - 9
exec/icmap.c

@@ -225,24 +225,26 @@ cs_error_t icmap_init(void)
 
 static void icmap_set_ro_access_free(void)
 {
-        struct qb_list_head *iter;
+	struct qb_list_head *iter, *tmp_iter;
 	struct icmap_ro_access_item *icmap_ro_ai;
 
-        qb_list_for_each(iter, &icmap_ro_access_item_list_head) {
+	qb_list_for_each_safe(iter, tmp_iter, &icmap_ro_access_item_list_head) {
 		icmap_ro_ai = qb_list_entry(iter, struct icmap_ro_access_item, list);
 		qb_list_del(&icmap_ro_ai->list);
 		free(icmap_ro_ai->key_name);
-                free(icmap_ro_ai);
+		free(icmap_ro_ai);
 	}
 }
 
 static void icmap_del_all_track(void)
 {
-        struct qb_list_head *iter;
+	struct qb_list_head *iter, *tmp_iter;
 	struct icmap_track *icmap_track;
-        qb_list_for_each(iter, &icmap_track_list_head) {
+
+	qb_list_for_each_safe(iter, tmp_iter, &icmap_track_list_head) {
 		icmap_track = qb_list_entry(iter, struct icmap_track, list);
-                icmap_track_delete(icmap_track);
+
+		icmap_track_delete(icmap_track);
 	}
 }
 
@@ -1229,10 +1231,10 @@ void *icmap_track_get_user_data(icmap_track_t icmap_track)
 
 cs_error_t icmap_set_ro_access(const char *key_name, int prefix, int ro_access)
 {
-	struct qb_list_head *iter;
+	struct qb_list_head *iter, *tmp_iter;
 	struct icmap_ro_access_item *icmap_ro_ai;
 
-        qb_list_for_each(iter, &icmap_ro_access_item_list_head) {
+	qb_list_for_each_safe(iter, tmp_iter, &icmap_ro_access_item_list_head) {
 		icmap_ro_ai = qb_list_entry(iter, struct icmap_ro_access_item, list);
 
 		if (icmap_ro_ai->prefix == prefix && strcmp(key_name, icmap_ro_ai->key_name) == 0) {
@@ -1279,7 +1281,7 @@ int icmap_is_key_ro(const char *key_name)
 	struct qb_list_head *iter;
 	struct icmap_ro_access_item *icmap_ro_ai;
 
-        qb_list_for_each(iter, &icmap_ro_access_item_list_head) {
+	qb_list_for_each(iter, &icmap_ro_access_item_list_head) {
 		icmap_ro_ai = qb_list_entry(iter, struct icmap_ro_access_item, list);
 
 		if (icmap_ro_ai->prefix) {

+ 4 - 4
exec/ipc_glue.c

@@ -392,14 +392,14 @@ void *cs_ipcs_private_data_get(void *conn)
 static void cs_ipcs_connection_destroyed (qb_ipcs_connection_t *c)
 {
 	struct cs_ipcs_conn_context *context;
-        struct qb_list_head *list;
+	struct qb_list_head *list, *tmp_iter;
 	struct outq_item *outq_item;
 
 	log_printf(LOG_DEBUG, "%s() ", __func__);
 
 	context = qb_ipcs_context_get(c);
 	if (context) {
-            qb_list_for_each(list, &(context->outq_head)) {
+		qb_list_for_each_safe(list, tmp_iter, &(context->outq_head)) {
 			outq_item = qb_list_entry (list, struct outq_item, list);
 
 			qb_list_del (list);
@@ -466,12 +466,12 @@ int cs_ipcs_response_send(void *conn, const void *msg, size_t mlen)
 static void outq_flush (void *data)
 {
 	qb_ipcs_connection_t *conn = data;
-        struct qb_list_head *list;
+	struct qb_list_head *list, *tmp_iter;
 	struct outq_item *outq_item;
 	int32_t rc;
 	struct cs_ipcs_conn_context *context = qb_ipcs_context_get(conn);
 
-        qb_list_for_each(list, &(context->outq_head)) {
+	qb_list_for_each_safe(list, tmp_iter, &(context->outq_head)) {
 		outq_item = qb_list_entry (list, struct outq_item, list);
 
 		rc = qb_ipcs_event_send(conn, outq_item->msg, outq_item->mlen);

+ 1 - 1
exec/totemconfig.c

@@ -863,7 +863,7 @@ int totem_config_find_local_addr_in_nodelist(const char *ipaddr_key_prefix, unsi
 			 * Try to match ip with if_addrs
 			 */
 			node_found = 0;
-                        qb_list_for_each(list, &(addrs)) {
+			qb_list_for_each(list, &(addrs)) {
 				if_addr = qb_list_entry(list, struct totem_ip_if_address, list);
 
 				if (totemip_equal(&node_addr, &if_addr->ip_addr)) {

+ 3 - 3
exec/totemip.c

@@ -389,9 +389,9 @@ error_free_ifaddrs:
 void totemip_freeifaddrs(struct qb_list_head *addrs)
 {
 	struct totem_ip_if_address *if_addr;
-	struct qb_list_head *list;
+	struct qb_list_head *list, *tmp_iter;
 
-        qb_list_for_each(list, addrs) {
+	qb_list_for_each_safe(list, tmp_iter, addrs) {
 		if_addr = qb_list_entry(list, struct totem_ip_if_address, list);
 
 		free(if_addr->name);
@@ -424,7 +424,7 @@ int totemip_iface_check(struct totem_ip_address *bindnet,
 		return (-1);
 	}
 
-        qb_list_for_each(list, &addrs) {
+	qb_list_for_each(list, &addrs) {
 		if_addr = qb_list_entry(list, struct totem_ip_if_address, list);
 
 		if (bindnet->family != if_addr->ip_addr.family)

+ 5 - 5
exec/totempg.c

@@ -303,7 +303,7 @@ static struct assembly *assembly_ref (unsigned int nodeid)
 	/*
 	 * Search inuse list for node id and return assembly buffer if found
 	 */
-        qb_list_for_each(list, active_assembly_list_inuse) {
+	qb_list_for_each(list, active_assembly_list_inuse) {
 		assembly = qb_list_entry (list, struct assembly, list);
 
 		if (nodeid == assembly->nodeid) {
@@ -353,7 +353,7 @@ static void assembly_deref (struct assembly *assembly)
 static void assembly_deref_from_normal_and_trans (int nodeid)
 {
 	int j;
-        struct qb_list_head *list;
+	struct qb_list_head *list, *tmp_iter;
 	struct qb_list_head *active_assembly_list_inuse;
 	struct assembly *assembly;
 
@@ -364,7 +364,7 @@ static void assembly_deref_from_normal_and_trans (int nodeid)
 			active_assembly_list_inuse = &assembly_list_inuse_trans;
 		}
 
-                qb_list_for_each(list, active_assembly_list_inuse) {
+		qb_list_for_each_safe(list, tmp_iter, active_assembly_list_inuse) {
 			assembly = qb_list_entry (list, struct assembly, list);
 
 			if (nodeid == assembly->nodeid) {
@@ -396,7 +396,7 @@ static inline void app_confchg_fn (
 		assembly_deref_from_normal_and_trans (left_list[i]);
 	}
 
-        qb_list_for_each(list, &totempg_groups_list) {
+	qb_list_for_each(list, &totempg_groups_list) {
 		instance = qb_list_entry (list, struct totempg_group_instance, list);
 
 		if (instance->confchg_fn) {
@@ -542,7 +542,7 @@ static inline void app_deliver_fn (
 
 	iovec = &aligned_iovec;
 
-        qb_list_for_each(list, &totempg_groups_list) {
+	qb_list_for_each(list, &totempg_groups_list) {
 		instance = qb_list_entry (list, struct totempg_group_instance, list);
 		if (group_matches (iovec, 1, instance->groups, instance->groups_cnt, &adjust_iovec)) {
 			stripped_iovec.iov_len = iovec->iov_len - adjust_iovec;

+ 2 - 2
exec/totemsrp.c

@@ -3439,7 +3439,7 @@ static void token_callbacks_execute (
 	struct totemsrp_instance *instance,
 	enum totem_callback_token_type type)
 {
-        struct qb_list_head *list;
+	struct qb_list_head *list, *tmp_iter;
 	struct qb_list_head *callback_listhead = 0;
 	struct token_callback_instance *token_callback_instance;
 	int res;
@@ -3456,7 +3456,7 @@ static void token_callbacks_execute (
 		assert (0);
 	}
 
-        qb_list_for_each(list, callback_listhead) {
+	qb_list_for_each_safe(list, tmp_iter, callback_listhead) {
 		token_callback_instance = qb_list_entry (list, struct token_callback_instance, list);
 		del = token_callback_instance->delete;
 		if (del == 1) {

+ 4 - 4
exec/totemudpu.c

@@ -319,7 +319,7 @@ static inline void mcast_sendmsg (
 	struct iovec iovec;
 	struct sockaddr_storage sockaddr;
 	int addrlen;
-       struct qb_list_head *list;
+	struct qb_list_head *list;
 	struct totemudpu_member *member;
 
 	iovec.iov_base = (void *)msg;
@@ -329,7 +329,7 @@ static inline void mcast_sendmsg (
 	/*
 	 * Build multicast message
 	 */
-        qb_list_for_each(list, &(instance->member_list)) {
+	qb_list_for_each(list, &(instance->member_list)) {
 		member = qb_list_entry (list,
 			struct totemudpu_member,
 			list);
@@ -1082,7 +1082,7 @@ int totemudpu_member_remove (
 	/*
 	 * Find the member to remove and close its socket
 	 */
-        qb_list_for_each(list, &(instance->member_list)) {
+	qb_list_for_each(list, &(instance->member_list)) {
 		member = qb_list_entry (list,
 			struct totemudpu_member,
 			list);
@@ -1124,7 +1124,7 @@ int totemudpu_member_list_rebind_ip (
 
 	struct totemudpu_instance *instance = (struct totemudpu_instance *)udpu_context;
 
-        qb_list_for_each(list, &(instance->member_list)) {
+	qb_list_for_each(list, &(instance->member_list)) {
 		member = qb_list_entry (list,
 			struct totemudpu_member,
 			list);

+ 5 - 4
exec/vsf_quorum.c

@@ -231,9 +231,9 @@ static int quorum_register_callback(quorum_callback_fn_t function, void *context
 static int quorum_unregister_callback(quorum_callback_fn_t function, void *context)
 {
 	struct internal_callback_pd *pd;
-	struct qb_list_head *tmp;
+	struct qb_list_head *tmp, *tmp_iter;
 
-        qb_list_for_each(tmp, &internal_trackers_list) {
+	qb_list_for_each_safe(tmp, tmp_iter, &internal_trackers_list) {
 		pd = qb_list_entry(tmp, struct internal_callback_pd, list);
 		if (pd->callback == function && pd->context == context) {
 			qb_list_del(&pd->list);
@@ -339,7 +339,8 @@ static void send_internal_notification(void)
 {
 	struct qb_list_head *tmp;
 	struct internal_callback_pd *pd;
-        qb_list_for_each(tmp, &internal_trackers_list) {
+
+	qb_list_for_each(tmp, &internal_trackers_list) {
 		pd = qb_list_entry(tmp, struct internal_callback_pd, list);
 
 		pd->callback(primary_designated, pd->context);
@@ -374,7 +375,7 @@ static void send_library_notification(void *conn)
 	else {
 		struct quorum_pd *qpd;
 
-                qb_list_for_each(tmp, &lib_trackers_list) {
+		qb_list_for_each(tmp, &lib_trackers_list) {
 			qpd = qb_list_entry(tmp, struct quorum_pd, list);
 
 			corosync_api->ipc_dispatch_send(qpd->conn,

+ 2 - 2
lib/cpg.c

@@ -142,13 +142,13 @@ static void cpg_inst_free (void *inst)
 
 static void cpg_inst_finalize (struct cpg_inst *cpg_inst, hdb_handle_t handle)
 {
-        struct qb_list_head *iter;
+	struct qb_list_head *iter, *tmp_iter;
 	struct cpg_iteration_instance_t *cpg_iteration_instance;
 
 	/*
 	 * Traverse thru iteration instances and delete them
 	 */
-        qb_list_for_each(iter, &(cpg_inst->iteration_list_head)) {
+	qb_list_for_each_safe(iter, tmp_iter, &(cpg_inst->iteration_list_head)) {
 		cpg_iteration_instance = qb_list_entry (iter, struct cpg_iteration_instance_t, list);
 
 		cpg_iteration_instance_finalize (cpg_iteration_instance);