From a81bdcf3802e3a23175011f608a8889440ff59b4 Mon Sep 17 00:00:00 2001 From: Ziye Yang Date: Fri, 26 Jul 2019 04:40:50 +0800 Subject: [PATCH] sock: Fix the spdk_sock_remove_sock_group_from_map_table We need to compare the group info, then delete the related entry. Signed-off-by: Ziye Yang Change-Id: Ie5ed7f3ce8611fd61448788f54a63f624c813c19 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/463176 Reviewed-by: Broadcom SPDK FC-NVMe CI Reviewed-by: Ben Walker Reviewed-by: Jim Harris Tested-by: SPDK CI Jenkins --- lib/sock/sock.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/sock/sock.c b/lib/sock/sock.c index 958f5f819..9e0f56cb1 100644 --- a/lib/sock/sock.c +++ b/lib/sock/sock.c @@ -133,11 +133,13 @@ spdk_sock_map_lookup(int placement_id, struct spdk_sock_group **group) static void spdk_sock_remove_sock_group_from_map_table(struct spdk_sock_group *group) { - struct spdk_sock_placement_id_entry *entry; + struct spdk_sock_placement_id_entry *entry, *tmp; pthread_mutex_lock(&g_map_table_mutex); - STAILQ_FOREACH(entry, &g_placement_id_map, link) { - STAILQ_REMOVE(&g_placement_id_map, entry, spdk_sock_placement_id_entry, link); + STAILQ_FOREACH_SAFE(entry, &g_placement_id_map, link, tmp) { + if (entry->group == group) { + STAILQ_REMOVE(&g_placement_id_map, entry, spdk_sock_placement_id_entry, link); + } } pthread_mutex_unlock(&g_map_table_mutex);